Faire une liste des valeurs communes entre 2 attributs
Résolu
waren56
-
waren56 -
waren56 -
Bonjour, je suis débutant en SQL et j'étais en train de travailler sur une base de données concernant des recettes et je cherchais comment simplement arriver à ce résultat :
https://imgur.com/a/795QT
Pour l'instant je suis un peut perdu sur la condition que le WHERE doit porter (IN, GROUP BY EXISTS,...?)
SELECT i.NomIngredient AS 'Ingredients communs'
FROM PI101_INGREDIENTS i
JOIN PI101_COMPOSITIONS c USING (IdIngredient)
JOIN PI101_RECETTES r (IdRecette)
WHERE r.NomIngredients IN ( 'Cake à la tomate' = 'Cake aux noix et au roquefort');
Merci d'avance pour votre aide.
https://imgur.com/a/795QT
Pour l'instant je suis un peut perdu sur la condition que le WHERE doit porter (IN, GROUP BY EXISTS,...?)
SELECT i.NomIngredient AS 'Ingredients communs'
FROM PI101_INGREDIENTS i
JOIN PI101_COMPOSITIONS c USING (IdIngredient)
JOIN PI101_RECETTES r (IdRecette)
WHERE r.NomIngredients IN ( 'Cake à la tomate' = 'Cake aux noix et au roquefort');
Merci d'avance pour votre aide.
A voir également:
- Faire une liste des valeurs communes entre 2 attributs
- Liste déroulante excel - Guide
- Supercopier 2 - Télécharger - Gestion de fichiers
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Faire 2 colonnes sur word - Guide
1 réponse
Bonjour,
Déjà... tu pourrais poster l'image DIRECTEMENT sur le forum au lieu d'en mettre un lieu qui pourrait être supprimé...
Donc voici l'image en question :

Puis, pour poster du code sur le forum... il faut utiliser LES BALISES DE CODE
Explications ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Ensuite... la structure de tes tables voir même un DUMP avec quelques données seraient les bienvenus.....
Et enfin
dans un IN tu mets DES éléments séparés par des virgules ... tu n'y mets pas de condition... que vient faire le "=" ici ???
A la limite, ce que tu cherches c'est
Mais si ce sont les ingrédients communs que tu cherches... la "bonne" requête serait plutôt du genre
Ou sinon, en utilisant du GROUP BY et un HAVING COUNT >1
Un truc du genre
NB: J'ai écrit les requêtes de têtes sans tester... si elles ne marchent pas.. il faudra les adapter...
Mais bon.. sans avoir ta structure ni de dump... difficile de t'en dire plus
Cordialement,
Jordane
Déjà... tu pourrais poster l'image DIRECTEMENT sur le forum au lieu d'en mettre un lieu qui pourrait être supprimé...
Donc voici l'image en question :

Puis, pour poster du code sur le forum... il faut utiliser LES BALISES DE CODE
Explications ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Ensuite... la structure de tes tables voir même un DUMP avec quelques données seraient les bienvenus.....
Et enfin
dans un IN tu mets DES éléments séparés par des virgules ... tu n'y mets pas de condition... que vient faire le "=" ici ???
A la limite, ce que tu cherches c'est
WHERE r.NomIngredients IN ( 'Cake à la tomate' , 'Cake aux noix et au roquefort');
Mais si ce sont les ingrédients communs que tu cherches... la "bonne" requête serait plutôt du genre
SELECT i.NomIngredient AS 'Ingredients communs' FROM PI101_COMPOSITIONS c LEFT JOIN PI101_INGREDIENTS i ON i.IdIngredient = c.IdIngredient LEFT JOIN PI101_RECETTES r ON r.IdRecette = c.IdRecette WHERE c.NomRecette = 'Cake à la tomate' AND i.IdIngredient IN ( SELECT i2.NomIngredient FROM PI101_COMPOSITIONS c2 LEFT JOIN PI101_INGREDIENTS i2 ON i2.IdIngredient = c2.IdIngredient LEFT JOIN PI101_RECETTES r2 ON r2.IdRecette = c2.IdRecette WHERE c2.NomRecette = 'Cake aux noix et au roquefort' )
Ou sinon, en utilisant du GROUP BY et un HAVING COUNT >1
Un truc du genre
SELECT i.NomIngredient AS 'Ingredients communs' FROM PI101_INGREDIENTS i JOIN PI101_COMPOSITIONS c USING (IdIngredient) JOIN PI101_RECETTES r (IdRecette) WHERE r.NomRecette IN ( 'Cake à la tomate' , 'Cake aux noix et au roquefort') GROUP BY i.NomIngredient HAVING COUNT(i.NomIngredient) >1
NB: J'ai écrit les requêtes de têtes sans tester... si elles ne marchent pas.. il faudra les adapter...
Mais bon.. sans avoir ta structure ni de dump... difficile de t'en dire plus
Cordialement,
Jordane
Sinon ta deuxième requête a marché après quelques modif donc je te remercie.