Bonjour à tous,
Voila mon Souci, j'ai 3 tables :
produits
id | ref ...
2 | AA
2 | BB
3 | CC
4 | DD
produits_filtres
produits_id | filtres_id
2 | 9
2 | 11
3 | 11
4 | 12
filtres
id | NameFiltre | ValueFiltre
8 | Themes | Plage
9 | Themes | Ville
10 | Motifs | Rayures
11 | Motifs | Zèbre
12 | style | Rock
J'ai une requête qui me permets de lister tous les filtres utilisé par les produits :
SELECT F.* FROM filtres
F
JOIN produits\_filtres
PF
ON PF
.filtres\_id
= F
.id
JOIN produits
P
ON P
.id = PF
.produits\_id
GROUP BY F
.id
Résultat :
9 Themes Ville
11 Motifs Zèbre
12 style Rock
Mais je n'arrive pas à lister les filtres qu'utilisent les produits dont un filtre est déjà utilisé ex :
Si ma requête cible les produits dont PF.filtres_id = 9,
j'aimerais que la liste des filtres utilisé par PF.produits_id, et qui ont PF.filtres_id = 9
Résultat souhaité :
9 Themes Ville
11 Motifs Zèbre
j'ai testé avec une sous requête : WHERE P
.id
IN (SELECT P
.id
FROM produits
PF WHERE PF
.filtres\_id
= 9 )
Mais non...
en espérant avoir été assez explicite.
Merci de votre aide,
Franck
Bonjour,
Il faut effectivement passer par une sous-requete, impossible de mettre plusieurs conditions du type 'colonne=valeur' pour la meme colonne.
En reprenant les donnees de test:
mysql> select f.* from filtre f, produit_filtre pf where f.id=pf.filtre_id and pf.produit_id in (select pf.produit_id from produit_filtre pf where pf.filtre_id=9);
+------+--------+-------+
| id | name | value |
+------+--------+-------+
| 9 | theme | ville |
| 11 | motifs | zebre |
+------+--------+-------+
2 rows in set (0.01 sec)
C'est pas forcement la methode la plus propre mais a priori ca marche !
J'espere que ca aide.