Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
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
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
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