bonjour, j'ai 2 tables
composition
idcomposition idrecette idingredient
1 1 4
2 1 12
3 1 45
4 1 33
5 2 12
6 2 26
7 3 4
ingredients
idIngredient quantite
...
4 0
...
12 12
...
26 6
...
33 0
...
45 0
Concrétement, je cherche une requette qui ne me fasse ressortir que les recettes pour lesquelles tous les ingrédients sont disponibles. Ici ce serait la recette 2
J'ai bien:
mais c'est très inefficace
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 select count(composition.id) as sum1, composition.idRecette as idc from composition, ingredient where composition.idIngredient = ingredient.id and ingredient.quantite>0 group by idc having sum1 = (select count(composition.id) as sum1 from composition, ingredient where composition.idIngredient = ingredient.id and composition.idRecette=idc group by composition.idRecette )
par jointure classique, type:
Me donne toutes les recettes pour lesquelles j'ai un des ingredient disponibles, ici les recettes 1 et 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select distinct composition.idrecette from composition, ingredient where ingredient.id = composition.idIngredient and ingredient.quantite > 0
or je travaille sur sqlite et FULL JOIN n'est pas disponible
Quelqu'un a-t-il un suggestion ?
Partager