--- title: BDR - grTP1 - Grp_3 tags: grTP1 --- [//]: <> (Ne pas modifier ce qui est au dessus SVP.) # TP3 ### Question 1 Requête 1 SELECT nom_recette FROM recette WHERE (calories_recette > 90) ; ### Question 2 SELECT descriptif_produit from produit JOIN rangement USING(num_rangement) ; ### Question 3 SELECT DISTINCT nom_recette FROM recette JOIN composition USING(num_recette) JOIN ingredient USING(num_ingredient) JOIN type_ingredient USING(num_type_ingredient) WHERE (nom_type_ingredient = 'fruit de mer') ; ### Question 4 ```SQL SELECT DISTINCT nom_recette FROM recette JOIN composition USING(num_recette) JOIN ingredient USING(num_ingredient) JOIN type_ingredient USING(num_type_ingredient) WHERE LOWER(nom_type_ingredient) != 'fruit de mer' ; SELECT nom_recette FROM recette WHERE num_recette NOT IN ( ``` ### i) Question 5 ``` SELECT DISTINCT nom_recette FROM recette JOIN composition USING(num_recette) JOIN ingredient USING(num_ingredient) JOIN type_ingredient USING(num_type_ingredient) WHERE (nom_type_ingredient = 'fruit de mer') ); ``` ### i) Question 5 SELECT num_type_ingredient, num_ingredient, nom_ingredient, nom_type_ingredient FROM ingredient JOIN type_ingredient USING(num_type_ingredient) WHERE (nom_type_ingredient = 'matière grasse') ; ### ii) CREATE VIEW ingredient_gras AS (SELECT num_type_ingredient, num_ingredient, nom_ingredient, nom_type_ingredient FROM ingredient JOIN type_ingredient USING(num_type_ingredient) WHERE (nom_type_ingredient = 'matière grasse')); ### iii) SELECT * FROM ingredient_gras ; ### iv) SELECT nom_recette FROM recette JOIN composition USING (num_recette) JOIN ingredient_gras USING(num_ingredient) WHERE (nom_type_ingredient = 'matière grasse') GROUP BY nom_recette HAVING COUNT (nom_type_ingredient) >2 ; ### (v) SELECT DISTINCT nom_rangement FROM rangement JOIN produit USING (num_rangement) JOIN ingredient USING (num_ingredient) JOIN type_ingredient USING (num_type_ingredient) WHERE (nom_type_ingredient = 'matière grasse'); ### vi) SELECT num_ingredient, nom_ingredient, SUM(quantite_produit) AS somme_quantite_produit FROM produit RIGHT JOIN ingredient_gras USING (num_ingredient) WHERE (nom_type_ingredient = 'matière grasse') GROUP BY num_ingredient, nom_ingredient ; ### vii) CREATE VIEW quantite_produit_gras2 AS ( SELECT num_ingredient, nom_ingredient, SUM(quantite_produit) AS somme_quantite_produit FROM produit RIGHT JOIN ingredient_gras USING (num_ingredient) WHERE (nom_type_ingredient = 'matière grasse') GROUP BY num_ingredient, nom_ingredient ) ; UPDATE quantite_produit_gras2 SET somme_quantite_produit = 0 WHERE (somme_quantite_produit IS NULL) ; ### Question 6 Déjà fait dans question précédente ### Question 7(Question sur invisibiliser la colonne somme_quantite_produit) SELECT num_recette, nom_recette, EXCEPT(somme_quantite_produit), CASE WHEN somme_quantite_produit>120 THEN 'recette trop grasse' WHEN somme_quantite_produit <50 AND somme_quantite_produit >0 THEN 'recette légère' WHEN somme_quantite_produit = 0 THEN 'recette non grasse' ELSE 'recette moyennement grasse' END FROM quantite_produit_gras2 JOIN composition USING(num_ingredient) JOIN recette USING(num_recette); ### Question 8 SELECT nom_recette FROM recette JOIN composition USING (num_recette) JOIN ingredient USING (num_ingredient) WHERE LOWER (nom_ingredient) = 'jaune d'oeuf' OR 'viande rouge' OR nom_ingredient=('jaune d'oeuf' AND 'viande rouge') ; ### Question 9 SELECT nom_type_ingredient FROM produit JOIN ingredient USING (num_ingredient) JOIN type_ingredient