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
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