[RESOLU] Requête SQL difficile

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Requête SQL difficile

Re: Requête SQL difficile

par Dataes » 29 avr. 2016, 10:23

YOUHOU :D
Merci GENOVA ! Je rajoute juste un LIMIT 1 à la fin et c'est parfait !
Génial =D>

Re: Requête SQL difficile

par Genova » 29 avr. 2016, 04:50

Salut,

Il suffit de compter pour chaque pizza le nombre d'ingrédients qui correspondent à ceux que tu cherches (tu cherches les ingrédients 1, 2, 3 et 4 dans l'exemple ci dessous), et ce nombre doit être égal au total d'ingrédients que tu cherches (donc 4 dans l'exemple).
SELECT pizza_id, COUNT(*) as total
FROM pizza_has_ingredients
WHERE ingredients_id IN (1, 2, 3, 4)
GROUP BY pizza_id
HAVING total = 4;

Re: Requête SQL difficile

par Dataes » 28 avr. 2016, 09:39

Cela ne convient pas. :(
Avec plusieurs left join cela multiplie l'affichage des ids ingredients.

Re: Requête SQL difficile

par Dataes » 27 avr. 2016, 18:02

Salut Spols,
J'ai compris l'idée, le nombre d'ingrédients n'est pas fixe, mais j'imagine pouvoir incrémenter la requête.
Je reviens vers toi dès que possible, merci encore.

Re: Requête SQL difficile

par Spols » 27 avr. 2016, 15:30

Si le nombre d'ingrédient est fixe, tu peux faire 4 LEFT join vers ta table ingrédient avec un critère que l'id doit toujours être plus grands que le précédent. Tu pourra alors triéer tes résultats plus finement

Requête SQL difficile

par Dataes » 27 avr. 2016, 13:04

Bonjour,
J'ai une table intermédiaire entre pizza et ingrédients (4 ingredients), cette table intermédiaire contient l'id des pizzas et l'id des ingrédients correspondant. Exemple :
idPizza > idIng
[15] > [1]
[15] > [2]
[15] > [3]
[15] > [4]
(La pizza 15 contient les ingrédients 1,2,3 et 4)

Ma requête :
SELECT pizza_id , GROUP_CONCAT(ingredients_id) AS iid
FROM pizza_has_ingredients phi
GROUP BY pizza_id

Le résultat (exemple):
pizza_id = 15
iid=1,2,3,4

J'ai besoin de trouver l'id d'une pizza (15) grace à un WHERE ingredients_id=1 AND ingredients_id=2 ect....

La requête retourne un résultat vide, si je met que "WHERE ingredients_id=1", le résultat sortant est toutes les pizzas contenant l'ingrédient 1, chaque pizza a une combinaison d'ingrédients unique seulement le problème c'est bien l'agencement voir plus haut (15>1,15>2 ect...)
(Je n'arrive pas non plus avec LIKE)

Quelqu'un pourrait m'aider ? :o
Merci