|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Maxence NoelStudent Inscription : janvier 2012 Messages : 3 ![]() |
Bonjour à tous,
je travaille en ce moment sur un projet web, et je suis ici pour vous exposer mon problème. J'ai trois tables: ingredients: id_ingredient, nom_ingredient recettes: id_recette, nom_recette contenir: id_ingredient, id_recette Mon problème est que je dois récupérer toutes les recettes qui comportent certains ingrédients. J'ai déjà travaillé ma requête de nombreuses fois mais je n'y arrive pas. Voila ce que j'ai trouvé. Code :
Merci de venir à mon aide. |
||
|
|
00
|
|
|
#2 | ||
|
Membre régulier
![]() Francis LennertDéveloppeur informatique Inscription : novembre 2011 Messages : 52 ![]() |
Hello
Il me semble que ton probleme provient du "AND" dans ta clause WHERE. Ton ingrédient ne peut être en même temps du LAIT ET du Beurre. Mon prénom est FRANCIS et donc ne peut pas être ERIC. Mais un OR à la place ... Code SQL :
Bon weekend Francis (qui n'est pas Eric) |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Maxence NoelStudent Inscription : janvier 2012 Messages : 3 ![]() |
Bonjour Francis (qui n'est pas Eric
Je comprends parfaitement ce que tu veux me dire, seulement je t'explique plus en détail: je dois insérer plusieurs ingredients dans ma table ingredients qui correspondront à des recettes. CAD un ingredient pourra appartenir à 0 ou plusieurs recettes et un recette pourra avoir un ou plusieurs ingredients. Je suis en train de créer un formulaire permettant aux utilisateurs d'ajouter des recettes à ma base de données. Seulement ils doivent entrer plusieurs ingredients dans le formulaire. Ces différents ingrédients devront être lié à leur recette. En page principale, les utilisateurs pourront trouver des recettes en sélectionnant 4 ingrédients dans 4 listes déroulantes. C'est cette requête qui me pose problème. Je dois insérer les 4 ingredients dans la requête afin qu'il me trouve les recettes ayant ces 4 ingrédients, mais aussi trouver les recettes ayant seulement 3 ingrédients si l'utilisateur en a sélectionné que 3. Je me demande même s'il est possible de faire ça avec SQL. Je devrais peut-être me pencher un peu plus sur mon php. |
|
|
00
|
|
|
#4 | ||
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Bonjour,
Tu peux chercher l'existence d'un ingredient dans une recette ainsi : Code :
|
||
|
|
00
|
|
|
#5 | |||
![]() ![]() |
Citation:
La table associative entre les ingrédients et les recettes comprend des couples {id_ingredient, id_recette}. Une recette qui comporte 10 ingrédients aura donc 10 lignes dans la table associative. L'utilisateur choisit une liste d'ingrédients et souhaite les recettes qui comportent tous ces ingrédients. La requête doit donc sélectionner les lignes de la table associative dont l'ingrédient fait partie de la liste des ingrédients et ne retenir que les recettes dont le nombre de lignes dans la table associative (le nombre d'ingrédients) est égal au nombre d'éléments de la liste d'ingrédients choisis. Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#6 | ||||
|
Invité de passage
![]() Maxence NoelStudent Inscription : janvier 2012 Messages : 3 ![]() |
Bonjour CinePhil,
je comprends parfaitement ce que vous voulez me dire. Il reste seulement un petit détail que j'ai oublié d'énoncer dans la première partie. Il est important que les recettes affichées comportent le même nombre d'ingredient que la recette initiale. Je m'explique. J'ai créer une première requête qui compte le nombre d'ingrédient par recette: Code :
Code :
Le problème maintenant c'est qu'il me faut les recettes qui ont le même nombre d'ingrédient pour la première et le deuxième requête. CAD Je dois avoir au final les recettes contenant les ingrédients qu'on a au préalable entré mais qui (les recettes) ont le bon nombre d'ingrédient. Je fais cela car je veux seulement récupérer le nom de recettes qui ont besoin seulement des ingrédients entrés et non pas les recettes qui comportent un des ingrédients entrés. je pense qu'il y a peut être possibilité d'imbriquer les deux requêtes. Merci pour vos réponses |
||||
|
|
00
|
|
|
#7 | |
![]() ![]() |
Je ne comprends pas tes explications !
Ma requête répondait, il me semble, au besoin exprimé qui était de trouver les recettes qui utilisent, par exemple, du lait ET de l'oeuf. Citation:
J'avais précisié dans ma requête que le nombre figurant dans le HAVING devait être celui du nombre d'éléments de la liste du IN, autrement dit le nombre d'ingrédients cherchés, pas le nombre de recettes !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com