Bonjour,
Je souhaite creer une appli permettant de rechercher des recettes selon
différents critères, je souhaite que mon formulaire de recherche soit le plus
modulables possibles, pour cela, l'utilisateur peut choisir les champs dans
lesquels il veut effectuer sa recherche en cochant dans la case
correspondante.
Cette fonctionnalité marche très bien, cependant, je souhaite aller plus
loin, je veux que l'utilisateur puisse rechercher des recettes contenant du
poulet ET du citron par exemple. Pour cela, il tape dans la même zone de
texte "poulet ET citron", cependant, la requête qui est fabriquée par mon
code ne va chercher que les libellés d'ingrédients contenant poulet ET citron
alors que je veux les ingrédients contenant poulet ET les ingredients
contenant Citron....
J'espère que je vous ai suffisament clairement expliqué mon problème.
Je vous joins une partie de mon code au cas où quelqu un pourrait me
débloquer.
en vous remerciant d'avance...
'La requête sera contenue dans la variable "SQL"'
Dim SQL As String
'Requête SQL de base qui selectionne tous les enregistrements de la table
recette'
SQL = "SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' "
'Si le bouton chk_recette est enfoncé, on cherche tous les enregistrements
qui ont
'un libellé semblable à celui tapé dans la zone de texte libellé'
If Me.Chk_recette = True Then
SQL = SQL & "AND T_recette.libelle_recette like '*" & Me.ZT_libelle & "*'"
End If
'Début du code qui me pose problème...!!!!!!!!!:
'Si le bouton Chk_ingredient est enfoncé, on cherche les recettes pour
lesquelles
'les ingrédients ont un libellé semblable à celui tapé dans la zone de texte
SQL = SQL & "AND ("
Dim chaine As String
Dim longueur As Integer
Dim posET As Integer
Dim posOU As Integer
Dim i As Integer
chaine = Me.ZT_ingredient
longueur = Len(chaine)
For i = 1 To longueur
posET = InStr(i, chaine, " ET ")
posOU = InStr(i, chaine, " OU ")
If posET = i Or posOU = i Then
SQL = SQL & " T_ingredient.libelle_ingredient like '*" & Mid(chaine, 1, i) &
"*'"
If posET = i Then
SQL = SQL & " AND "
Else: SQL = SQL & " OR "
End If
chaine = Mid(chaine, i + 4, longueur - (i + 4))
longueur = Len(chaine)
i = 0
End If
If i = longueur And chaine <> "" Then
SQL = SQL & "T_ingredient.libelle_ingredient like '*" & chaine & "*'"
End If
J'ai pas lu tout le sql mais je suppose que tu as une association entre la table Recette et la table Ingredient qui porte sur une relation N-N.
Soit la table Recette definie comme suit : NumR - clé primaire NomR - Nom Recette ...
Soit la table Ingredient: NumI - clé primaire NomI - Nom Ingredient ...
et la table RecetteIngredient(née de l'association Plusieurs-Plusieurs) NumR NumI Qte - Quantité
le sql suivant te donnera les recettes à base, à la fois, de poulet et de curry:
SELECT Recette.NomR, Recette.NumR FROM (Recette INNER JOIN RecetteIngredient ON Recette.NumR = RecetteIngredient.NumR) INNER JOIN Ingredient ON RecetteIngredient.NumI = Ingredient.NumI WHERE Ingredient.NomI Like "*poulet*" AND RecetteIngredient.NumR In (SELECT RecetteIngredient.NumR FROM RecetteIngredient INNER JOIN Ingredient ON RecetteIngredient.NumI = Ingredient.NumI WHERE Ingredient.NomI Like "*curry*");
A toi d'adapter pour les jointures externes .
Ok?
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
hélàs ta solution ne fonctionne pas, il faudrait que dans le libellé d'un ingrédient il y ait a la fois poulet et curry...
au cas où je peux vous envoyer la requête fabriquée pour quelques recherches
- Si on ne tape rien dans le champ libellé ingrédient :
SELECT DISTINCT T_recette.code_prototype as 'Code prototype', T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation as 'Date', T_recette.note_recette as 'Note', T_acceptation.libelle_acceptation as 'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet', T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN (T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT JOIN T_recette ON T_chef_de_projet.id_chef_de_projet = T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT JOIN (T_ingredient RIGHT JOIN T_detail_recette ON T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON T_recette.id_recette = T_stockage.id_recette) ON T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON T_acceptation.id_acceptation = T_recette.id_acceptation WHERE T_recette.code_prototype <> '' ;
- Si on tape poulet dans le champ libelle ingredient :
SELECT DISTINCT T_recette.code_prototype as 'Code prototype', T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation as 'Date', T_recette.note_recette as 'Note', T_acceptation.libelle_acceptation as 'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet', T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN (T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT JOIN T_recette ON T_chef_de_projet.id_chef_de_projet = T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT JOIN (T_ingredient RIGHT JOIN T_detail_recette ON T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON T_recette.id_recette = T_stockage.id_recette) ON T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON T_acceptation.id_acceptation = T_recette.id_acceptation WHERE T_recette.code_prototype <> '' AND T_ingredient.libelle_ingredient like '*poulet*';
- Si on tape poulet et curry
SELECT DISTINCT T_recette.code_prototype as 'Code prototype', T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation as 'Date', T_recette.note_recette as 'Note', T_acceptation.libelle_acceptation as 'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet', T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN (T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT JOIN T_recette ON T_chef_de_projet.id_chef_de_projet = T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT JOIN (T_ingredient RIGHT JOIN T_detail_recette ON T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON T_recette.id_recette = T_stockage.id_recette) ON T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON T_acceptation.id_acceptation = T_recette.id_acceptation WHERE T_recette.code_prototype <> '' AND T_ingredient.libelle_ingredient like '*poulet *' AND T_ingredient.libelle_ingredient like '*curry*';
je rapelle pour finir que la table recette contient que le nom de la recette, du chef de projet, la date de creation... la table detail recette contient pour chaque ligne le libellé des ingrédients présents dans la recette
ex :
T_ recette
id_recette libelle_recette chef_de_projet 1;Poulet à l'orientale;Didier Gustin
J'ai pas lu tout le sql mais je suppose que tu as une association entre
la table Recette et la table Ingredient qui porte sur une relation N-N.
Soit la table Recette definie comme suit :
NumR - clé primaire
NomR - Nom Recette
...
Soit la table Ingredient:
NumI - clé primaire
NomI - Nom Ingredient
...
et la table RecetteIngredient(née de l'association Plusieurs-Plusieurs)
NumR
NumI
Qte - Quantité
le sql suivant te donnera les recettes à base, à la fois, de poulet et
de curry:
SELECT Recette.NomR, Recette.NumR
FROM (Recette INNER JOIN RecetteIngredient ON Recette.NumR =
RecetteIngredient.NumR)
INNER JOIN Ingredient ON RecetteIngredient.NumI = Ingredient.NumI
WHERE Ingredient.NomI Like "*poulet*" AND
RecetteIngredient.NumR In (SELECT RecetteIngredient.NumR
FROM RecetteIngredient
INNER JOIN Ingredient
ON RecetteIngredient.NumI = Ingredient.NumI
WHERE Ingredient.NomI Like "*curry*");
A toi d'adapter pour les jointures externes .
Ok?
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
hélàs ta solution ne fonctionne pas, il faudrait que dans le libellé d'un
ingrédient il y ait a la fois poulet et curry...
au cas où je peux vous envoyer la requête fabriquée pour quelques recherches
- Si on ne tape rien dans le champ libellé ingrédient :
SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' ;
- Si on tape poulet dans le champ libelle ingredient :
SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' AND T_ingredient.libelle_ingredient like
'*poulet*';
- Si on tape poulet et curry
SELECT DISTINCT T_recette.code_prototype as 'Code prototype',
T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation
as 'Date', T_recette.note_recette as 'Note',
T_acceptation.libelle_acceptation as
'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet',
T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN
(T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT
JOIN T_recette ON T_chef_de_projet.id_chef_de_projet =
T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT
JOIN (T_ingredient RIGHT JOIN T_detail_recette ON
T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON
T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON
T_recette.id_recette = T_stockage.id_recette) ON
T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON
T_acceptation.id_acceptation = T_recette.id_acceptation WHERE
T_recette.code_prototype <> '' AND T_ingredient.libelle_ingredient like
'*poulet *' AND T_ingredient.libelle_ingredient like '*curry*';
je rapelle pour finir que la table recette contient que le nom de la
recette, du chef de projet, la date de creation... la table detail recette
contient pour chaque ligne le libellé des ingrédients présents dans la recette
ex :
T_ recette
id_recette libelle_recette chef_de_projet
1;Poulet à l'orientale;Didier Gustin
J'ai pas lu tout le sql mais je suppose que tu as une association entre la table Recette et la table Ingredient qui porte sur une relation N-N.
Soit la table Recette definie comme suit : NumR - clé primaire NomR - Nom Recette ...
Soit la table Ingredient: NumI - clé primaire NomI - Nom Ingredient ...
et la table RecetteIngredient(née de l'association Plusieurs-Plusieurs) NumR NumI Qte - Quantité
le sql suivant te donnera les recettes à base, à la fois, de poulet et de curry:
SELECT Recette.NomR, Recette.NumR FROM (Recette INNER JOIN RecetteIngredient ON Recette.NumR = RecetteIngredient.NumR) INNER JOIN Ingredient ON RecetteIngredient.NumI = Ingredient.NumI WHERE Ingredient.NomI Like "*poulet*" AND RecetteIngredient.NumR In (SELECT RecetteIngredient.NumR FROM RecetteIngredient INNER JOIN Ingredient ON RecetteIngredient.NumI = Ingredient.NumI WHERE Ingredient.NomI Like "*curry*");
A toi d'adapter pour les jointures externes .
Ok?
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
hélàs ta solution ne fonctionne pas, il faudrait que dans le libellé d'un ingrédient il y ait a la fois poulet et curry...
au cas où je peux vous envoyer la requête fabriquée pour quelques recherches
- Si on ne tape rien dans le champ libellé ingrédient :
SELECT DISTINCT T_recette.code_prototype as 'Code prototype', T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation as 'Date', T_recette.note_recette as 'Note', T_acceptation.libelle_acceptation as 'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet', T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN (T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT JOIN T_recette ON T_chef_de_projet.id_chef_de_projet = T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT JOIN (T_ingredient RIGHT JOIN T_detail_recette ON T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON T_recette.id_recette = T_stockage.id_recette) ON T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON T_acceptation.id_acceptation = T_recette.id_acceptation WHERE T_recette.code_prototype <> '' ;
- Si on tape poulet dans le champ libelle ingredient :
SELECT DISTINCT T_recette.code_prototype as 'Code prototype', T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation as 'Date', T_recette.note_recette as 'Note', T_acceptation.libelle_acceptation as 'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet', T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN (T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT JOIN T_recette ON T_chef_de_projet.id_chef_de_projet = T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT JOIN (T_ingredient RIGHT JOIN T_detail_recette ON T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON T_recette.id_recette = T_stockage.id_recette) ON T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON T_acceptation.id_acceptation = T_recette.id_acceptation WHERE T_recette.code_prototype <> '' AND T_ingredient.libelle_ingredient like '*poulet*';
- Si on tape poulet et curry
SELECT DISTINCT T_recette.code_prototype as 'Code prototype', T_recette.libelle_recette as 'Libellé de la recette', T_recette.date_creation as 'Date', T_recette.note_recette as 'Note', T_acceptation.libelle_acceptation as 'Accept',T_chef_de_projet.nom_chef_de_projet as 'Chef de projet', T_gamme.libelle_gamme as 'Gamme' FROM T_acceptation RIGHT JOIN (T_type_stockage RIGHT JOIN (((T_gamme RIGHT JOIN (T_chef_de_projet RIGHT JOIN T_recette ON T_chef_de_projet.id_chef_de_projet = T_recette.id_chef_de_projet) ON T_gamme.id_gamme = T_recette.id_gamme) LEFT JOIN (T_ingredient RIGHT JOIN T_detail_recette ON T_ingredient.code_ingredient = T_detail_recette.code_ingredient) ON T_recette.id_recette = T_detail_recette.id_recette) LEFT JOIN T_stockage ON T_recette.id_recette = T_stockage.id_recette) ON T_type_stockage.id_type_stockage = T_stockage.id_type_stockage) ON T_acceptation.id_acceptation = T_recette.id_acceptation WHERE T_recette.code_prototype <> '' AND T_ingredient.libelle_ingredient like '*poulet *' AND T_ingredient.libelle_ingredient like '*curry*';
je rapelle pour finir que la table recette contient que le nom de la recette, du chef de projet, la date de creation... la table detail recette contient pour chaque ligne le libellé des ingrédients présents dans la recette
ex :
T_ recette
id_recette libelle_recette chef_de_projet 1;Poulet à l'orientale;Didier Gustin
On va pas te laisser tomber ... ;-) Si on est bien dans la configuration que je t'indiquais, alors un exemple ici :
http://cjoint.com/?hboumes8Sh -- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
J'ai testé ta proposition..la requête ne me donne aucun resultat...
Merci quand même à tous pour votre aide mais là je bloque!!!!....
Whitetown
Salut Eric! Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel, tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
Salut Eric!
Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à
la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la
simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel,
tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours
renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...)
et une table detail_recette (id_ligne_recette, id_recette, code_ingredient,
libelle_ingredient)
Salut Eric! Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel, tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
Eric
re,
La recette 1 est composée de : Curry et Aile poulet (2 ingrédients) La recette 5 : Curry, riz et cuisse poulet (3 ingrédients) Les recettes 3 et 4: Safran & aile poulet (2 ingrédients) La recette 2 n'a pas ces 2 ingrédients
donc c'est normal que la requête retourne les recettes 1 et 5.
Donc apparemment, tu cherches les recettes, en poursuivant ton exemple, ne contenant, exclusivement, que du poulet et du curry et rien d'autre. C'est bien ca ?
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Salut Eric! Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel, tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
re,
La recette 1 est composée de : Curry et Aile poulet (2 ingrédients)
La recette 5 : Curry, riz et cuisse poulet (3 ingrédients)
Les recettes 3 et 4: Safran & aile poulet (2 ingrédients)
La recette 2 n'a pas ces 2 ingrédients
donc c'est normal que la requête retourne les recettes 1 et 5.
Donc apparemment, tu cherches les recettes, en poursuivant ton exemple,
ne contenant, exclusivement, que du poulet et du curry et rien d'autre.
C'est bien ca ?
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Salut Eric!
Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à
la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la
simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel,
tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours
renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...)
et une table detail_recette (id_ligne_recette, id_recette, code_ingredient,
libelle_ingredient)
La recette 1 est composée de : Curry et Aile poulet (2 ingrédients) La recette 5 : Curry, riz et cuisse poulet (3 ingrédients) Les recettes 3 et 4: Safran & aile poulet (2 ingrédients) La recette 2 n'a pas ces 2 ingrédients
donc c'est normal que la requête retourne les recettes 1 et 5.
Donc apparemment, tu cherches les recettes, en poursuivant ton exemple, ne contenant, exclusivement, que du poulet et du curry et rien d'autre. C'est bien ca ?
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Salut Eric! Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel, tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
Whitetown
autant pour moi!!
j'avais pas fait gaffe!!!!!
cependant, cela n'a pas l'air de fonctionner avec mon modèle à deux tables...je suis peut être mauvais en syntaxe sql...
et pour ta derniere question : oui c'est bien ca!!!!!!
whitetown
re,
La recette 1 est composée de : Curry et Aile poulet (2 ingrédients) La recette 5 : Curry, riz et cuisse poulet (3 ingrédients) Les recettes 3 et 4: Safran & aile poulet (2 ingrédients) La recette 2 n'a pas ces 2 ingrédients
donc c'est normal que la requête retourne les recettes 1 et 5.
Donc apparemment, tu cherches les recettes, en poursuivant ton exemple, ne contenant, exclusivement, que du poulet et du curry et rien d'autre. C'est bien ca ?
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Salut Eric! Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel, tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
autant pour moi!!
j'avais pas fait gaffe!!!!!
cependant, cela n'a pas l'air de fonctionner avec mon modèle à deux
tables...je suis peut être mauvais en syntaxe sql...
et pour ta derniere question : oui c'est bien ca!!!!!!
whitetown
re,
La recette 1 est composée de : Curry et Aile poulet (2 ingrédients)
La recette 5 : Curry, riz et cuisse poulet (3 ingrédients)
Les recettes 3 et 4: Safran & aile poulet (2 ingrédients)
La recette 2 n'a pas ces 2 ingrédients
donc c'est normal que la requête retourne les recettes 1 et 5.
Donc apparemment, tu cherches les recettes, en poursuivant ton exemple,
ne contenant, exclusivement, que du poulet et du curry et rien d'autre.
C'est bien ca ?
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Salut Eric!
Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à
la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la
simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel,
tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours
renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...)
et une table detail_recette (id_ligne_recette, id_recette, code_ingredient,
libelle_ingredient)
cependant, cela n'a pas l'air de fonctionner avec mon modèle à deux tables...je suis peut être mauvais en syntaxe sql...
et pour ta derniere question : oui c'est bien ca!!!!!!
whitetown
re,
La recette 1 est composée de : Curry et Aile poulet (2 ingrédients) La recette 5 : Curry, riz et cuisse poulet (3 ingrédients) Les recettes 3 et 4: Safran & aile poulet (2 ingrédients) La recette 2 n'a pas ces 2 ingrédients
donc c'est normal que la requête retourne les recettes 1 et 5.
Donc apparemment, tu cherches les recettes, en poursuivant ton exemple, ne contenant, exclusivement, que du poulet et du curry et rien d'autre. C'est bien ca ?
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Salut Eric! Ta requête va chercher les recettes 1 et 5 alors que seule la 5 contient à la fois les deux ingrédients.
Le modèle de ma base correspondait à ce que tu as fait...mais j'ai du la simplifier, en effet, je dois importer 7000 recettes venant de fiches Excel, tous les champs ne sont pas forcement renseignés et ils ne sont pas toujours renseignés de la même facon.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
Eric
autant pour moi!!
j'avais pas fait gaffe!!!!!
cependant, cela n'a pas l'air de fonctionner avec mon modèle à deux tables...je suis peut être mauvais en syntaxe sql...
et pour ta derniere question : oui c'est bien ca!!!!!!
whitetown
re, Désolé, je m'etais absenté. Donc vite fait :
Pour avoir uniquement les recettes composées de poulet et curry, donc d'aucun autre ingrédient, il faut rajouter à la requête que je t'ai donnée, à la fin après avoir enlevé le ;
AND RecetteIngredient.NumR NOT IN (SELECT numR FROM RecetteIngredient GROUP BY NumR HAVING count(*)>2)
Dès que j'ai un moment, ce we, je regarderai pour te donner le sql basé sur les 2 tables que tu as décrites dans ton post.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
autant pour moi!!
j'avais pas fait gaffe!!!!!
cependant, cela n'a pas l'air de fonctionner avec mon modèle à deux
tables...je suis peut être mauvais en syntaxe sql...
et pour ta derniere question : oui c'est bien ca!!!!!!
whitetown
re,
Désolé, je m'etais absenté. Donc vite fait :
Pour avoir uniquement les recettes composées de poulet et curry,
donc d'aucun autre ingrédient, il faut rajouter à la requête que
je t'ai donnée, à la fin après avoir enlevé le ;
AND RecetteIngredient.NumR NOT IN (SELECT numR
FROM RecetteIngredient
GROUP BY NumR HAVING count(*)>2)
Dès que j'ai un moment, ce we, je regarderai pour te donner
le sql basé sur les 2 tables que tu as décrites dans ton post.
J ai donc une table recette (id_recette, libelle_recette,...)
et une table detail_recette (id_ligne_recette, id_recette, code_ingredient,
libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
cependant, cela n'a pas l'air de fonctionner avec mon modèle à deux tables...je suis peut être mauvais en syntaxe sql...
et pour ta derniere question : oui c'est bien ca!!!!!!
whitetown
re, Désolé, je m'etais absenté. Donc vite fait :
Pour avoir uniquement les recettes composées de poulet et curry, donc d'aucun autre ingrédient, il faut rajouter à la requête que je t'ai donnée, à la fin après avoir enlevé le ;
AND RecetteIngredient.NumR NOT IN (SELECT numR FROM RecetteIngredient GROUP BY NumR HAVING count(*)>2)
Dès que j'ai un moment, ce we, je regarderai pour te donner le sql basé sur les 2 tables que tu as décrites dans ton post.
J ai donc une table recette (id_recette, libelle_recette,...) et une table detail_recette (id_ligne_recette, id_recette, code_ingredient, libelle_ingredient)
Si cela peut un peu plus t eclairer!
Whitetown
-- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Eric
re,
Avec tes tables ici : http://cjoint.com/?hbt1LE0zve
Ouvres la fenêtre SQL de la requête RQWHITETOWN pour voir le code -- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
re,
Avec tes tables ici :
http://cjoint.com/?hbt1LE0zve
Ouvres la fenêtre SQL de la requête RQWHITETOWN pour voir le code
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avec tes tables ici : http://cjoint.com/?hbt1LE0zve
Ouvres la fenêtre SQL de la requête RQWHITETOWN pour voir le code -- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Whitetown
C'est parfait!! merci beaucoup pour ton aide et ton abnégation Eric!!!!
Bonne journée et bonne semaine...
re,
Avec tes tables ici : http://cjoint.com/?hbt1LE0zve
Ouvres la fenêtre SQL de la requête RQWHITETOWN pour voir le code -- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
C'est parfait!! merci beaucoup pour ton aide et ton abnégation Eric!!!!
Bonne journée et bonne semaine...
re,
Avec tes tables ici :
http://cjoint.com/?hbt1LE0zve
Ouvres la fenêtre SQL de la requête RQWHITETOWN pour voir le code
--
A+
Eric
http://users.skynet.be/mpfa/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
C'est parfait!! merci beaucoup pour ton aide et ton abnégation Eric!!!!
Bonne journée et bonne semaine...
re,
Avec tes tables ici : http://cjoint.com/?hbt1LE0zve
Ouvres la fenêtre SQL de la requête RQWHITETOWN pour voir le code -- A+ Eric http://users.skynet.be/mpfa/ Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr