Probleme de requete assez compliquée

Le
JO
bonjour,
j'ai une table recette, une table ingredient, Ingredient_Recette.

Ds Recette: Id, Nom
Ds Ingredient: Id, Nom
Ds Ingredient_Recette: Id_Recette,Id_Ingredient, Qte

Comment puis je faire une requete qui me permet de remonter toutes les
recettes qui contiennent Ingredient1 ET Ingredient2

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrice
Le #11857221
Le plus clair pour débuter serait la clause EXISTS :

SELECT * FROM Recettes
WHERE EXISTS(SELECT 1 FROM Ingredient WHERE Id_Recette=Id AND
Nom='Ingredient1')
AND EXISTS(SELECT 1 FROM Ingredient WHERE Id_Recette=Id AND
Nom='Ingredient2')

En clair les recettes pour lesquelles il existe une ligne pour l'ingrédient
1 et une ligne avec l'ingrédient 2 pour cette même recette...

Après il y a des variations possibles avec par exemple des LEFT JOIN, des
regroupements etc... au détriment de la clarté de l'objectif poursuivi.

Voir par exemple http://sql.developpez.com/sqlaz/sousrequetes/#L1.5.1 et
plus généralement le site pour une initiation....

---
Patrice

"JO"
bonjour,
j'ai une table recette, une table ingredient, Ingredient_Recette.

Ds Recette: Id, Nom
Ds Ingredient: Id, Nom
Ds Ingredient_Recette: Id_Recette,Id_Ingredient, Qte

Comment puis je faire une requete qui me permet de remonter toutes les
recettes qui contiennent Ingredient1 ET Ingredient2...

Merci




Patrice
Le #11857211
Oups. Manque le join pour récupérer le nom des ingrédients et l'alias pour
lever l'ambigüité sur le nom ce qui donnerait finalement quelque chose comme
:

SELECT * FROM Recette
WHERE EXISTS(SELECT 1 FROM Ingredient_Recette JOIN Ingredient ON
Id_Ingredient=Ingredient.Id WHERE Id_Recette=Recette.Id AND
Ingredient.Nom='Ingredient1')
SELECT 1 FROM Ingredient_Recette JOIN Ingredient ON
Id_Ingredient=Ingredient.Id WHERE Id_Recette=Recette.Id AND
Ingredient.Nom='Ingredient2')

--
Patrice


"Patrice"
Le plus clair pour débuter serait la clause EXISTS :

SELECT * FROM Recettes
WHERE EXISTS(SELECT 1 FROM Ingredient WHERE Id_Recette=Id AND
Nom='Ingredient1')
AND EXISTS(SELECT 1 FROM Ingredient WHERE Id_Recette=Id AND
Nom='Ingredient2')

En clair les recettes pour lesquelles il existe une ligne pour
l'ingrédient 1 et une ligne avec l'ingrédient 2 pour cette même recette...

Après il y a des variations possibles avec par exemple des LEFT JOIN, des
regroupements etc... au détriment de la clarté de l'objectif poursuivi.

Voir par exemple http://sql.developpez.com/sqlaz/sousrequetes/#L1.5.1 et
plus généralement le site pour une initiation....

---
Patrice

"JO"
bonjour,
j'ai une table recette, une table ingredient, Ingredient_Recette.

Ds Recette: Id, Nom
Ds Ingredient: Id, Nom
Ds Ingredient_Recette: Id_Recette,Id_Ingredient, Qte

Comment puis je faire une requete qui me permet de remonter toutes les
recettes qui contiennent Ingredient1 ET Ingredient2...

Merci








JO
Le #11857111
Patrice a formulé la demande :
Oups. Manque le join pour récupérer le nom des ingrédients et l'alias pour
lever l'ambigüité sur le nom ce qui donnerait finalement quelque chose comme
:

SELECT * FROM Recette
WHERE EXISTS(SELECT 1 FROM Ingredient_Recette JOIN Ingredient ON
Id_Ingredient=Ingredient.Id WHERE Id_Recette=Recette.Id AND
Ingredient.Nom='Ingredient1')
SELECT 1 FROM Ingredient_Recette JOIN Ingredient ON
Id_Ingredient=Ingredient.Id WHERE Id_Recette=Recette.Id AND
Ingredient.Nom='Ingredient2')

--
Patrice


"Patrice"
Le plus clair pour débuter serait la clause EXISTS :

SELECT * FROM Recettes
WHERE EXISTS(SELECT 1 FROM Ingredient WHERE Id_Recette=Id AND
Nom='Ingredient1')
AND EXISTS(SELECT 1 FROM Ingredient WHERE Id_Recette=Id AND
Nom='Ingredient2')

En clair les recettes pour lesquelles il existe une ligne pour l'ingrédient
1 et une ligne avec l'ingrédient 2 pour cette même recette...

Après il y a des variations possibles avec par exemple des LEFT JOIN, des
regroupements etc... au détriment de la clarté de l'objectif poursuivi.

Voir par exemple http://sql.developpez.com/sqlaz/sousrequetes/#L1.5.1 et
plus généralement le site pour une initiation....

---
Patrice

"JO"
bonjour,
j'ai une table recette, une table ingredient, Ingredient_Recette.

Ds Recette: Id, Nom
Ds Ingredient: Id, Nom
Ds Ingredient_Recette: Id_Recette,Id_Ingredient, Qte

Comment puis je faire une requete qui me permet de remonter toutes les
recettes qui contiennent Ingredient1 ET Ingredient2...

Merci











merci
Publicité
Poster une réponse
Anonyme