Mise en contexte rapide:
J'ai une galerie d'image, et chaque image peut avoir ou non une mention. Comme il y a plusieurs mention, (dans ce cas-ci: 2) , je dois savoir SI il y en a AU MOINS 1 d'active pour chaque image.
Bon, voici ma requête:
j'ai isolé 2 left join ensemble car c'est eux qui s'occupe de trouver le dernier champ qui me pose problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT i .* , m.img_small FROM 2g3p_j_galerie_image AS j LEFT JOIN 2g3p_image AS i ON ( i.id = j.id_image ) LEFT JOIN 2g3p_j_mention_image AS jm ON ( jm.id_image = j.id_image ) LEFT JOIN 2g3p_mention AS m ON ( m.id = jm.id_mention AND m.img_small =1 ) WHERE j.id_galerie = '2'
Voici le résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 id | no | titre | img_small | ------------------------------------------------- 7 | Img-007 | Test 7 | NULL | 8 | #004 | Clique Là! | NULL | 9 | test | bonhomme | NULL | 10 | #0005 | Sexy | NULL | 10 | #0005 | Sexy | 1 |
Si j'utilise un GROUP BY i.id , dans ce cas-ci, la requête va garder seulement la premiere ligne et supprimer le 1 de la deuxième.
Des idées ?
Partager