Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 26/08/2010 11:53:37
- llg
- Membre
Requete simple mais complexe
Bonjour,
Je suis désolé pour le titre, j'ai du mal à trouver une formulation correcte pour ce que je souhaite faire :s.
Voici la structure de ma table : good_filtre
object_id, brand_id, filtre_value_id (ce sont tous des int)
et des exemples de donnée associé:
1, 150, 2
1, 150, 3
15, 15, 3
20, 45, 16
44, 150, 3
Alors voici mon probléme :
J'aimerais récupéré, l'object_id si, le filtre_value_id est égale à 2 et à 3.
J'avoue que je ne vois pas comment me passer d'un traitement php, puisqu'à l'heure actuelle tout ce que j'arrive à faire c'est à récupérer les object_id ayant comme filtre_value_id 2 ou 3.
voici ma requête :
SELECT object_id
FROM good_filtre
WHERE filtre_value_id IN (1,9)
et je récupère donc :
1
1
15
44
Alors que ce que je souhaiterais récupérer c'est uniquement :
1
J'espère que vous comprenez mon probléme (je ne trouve pas mon explication très clair).
Merci d'avance pour votre temps et l'aide que vous pourrez m'apporter
Hors ligne
#2 26/08/2010 12:04:31
- gleu
- Administrateur
Re : Requete simple mais complexe
Non, en effet, votre explication n'est pas claire du tout. Vous parlez de faire un filtre sur les valeurs 2 et 3 et la requête que vous montrez fait un filtre sur les valeurs 1 et 9. De plus, le contenu exemple que vous nous fournissez ne correspond en rien au résultat de la requête.
Essayez au moins de fournir un exemple cohérent.
Guillaume.
Hors ligne
#3 26/08/2010 12:19:57
- llg
- Membre
Re : Requete simple mais complexe
Bonjour,
effectivement je me suis trompé dans la requête, elle devrait être :
SELECT object_id
FROM good_filtre
WHERE filtre_value_id IN (2,3)
Mais le contenue exemple correspond bien à l'architecture de la table que je décris :s
object_id, brand_id, filtre_value_id
1 , 150 , 2
ma requete ne renvoyant que l'object_id, elle revoie donc bien 1 pour le row d'exemple :s
Hors ligne
#4 26/08/2010 13:33:30
- Marc Cousin
- Membre
Re : Requete simple mais complexe
SELECT object_id
FROM good_filtre
WHERE filtre_value_id IN (2,3)
Est exactement l'expression SQL de :
J'aimerais récupéré, l'object_id si, le filtre_value_id est égale à 2 et à 3.
Pouvez vous expliquer où est le problème ?
Marc.
Hors ligne
#5 26/08/2010 14:09:03
- llg
- Membre
Re : Requete simple mais complexe
Arf, je suis désolé j'ai vraiment du mal à exprimer ce que je souhaite
j'aimerais récupérer les object_id qui correspondent à un ou plusieurs filtre_value_id.
Or quand j'utilise cette requête :
SELECT object_id
FROM good_filtre
WHERE filtre_value_id IN (2,3)
Je récupère les object_id qui sont égaux à filtre_value_id = 2, puis ceux qui sont égaux à un filtre_value_id = 3, et pas uniquement ceux qui sont égaux à 2 et à 3.
donc avec cette requête je peux par exemple récupéré un object_id qui est égale à 2 mais pas également à 3 et inversement.
J'espère que mon probléme est plus clair :s
Hors ligne
#6 26/08/2010 14:52:31
- flo
- Membre
Re : Requete simple mais complexe
C'est simple alors, il te faut l'intersection des 2 ensembles, pour obtenir les object_id qui ont une valeur de filtre_value_id égale à 2 ET une valeur égale à 3.
Une solution :
SELECT object_id
FROM good_filtre
WHERE filtre_value_id = 2
INTERSECT
SELECT object_id
FROM good_filtre
WHERE filtre_value_id = 3
Hors ligne
#7 26/08/2010 14:59:41
- llg
- Membre
Re : Requete simple mais complexe
Super ça marche du tonnerre, j'ai vraiment eu du mal à vous expliquer mon probléme, je vous remercie tous les trois pour votre temps
Hors ligne
Pages : 1