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:

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'
j'ai isolé 2 left join ensemble car c'est eux qui s'occupe de trouver le dernier champ qui me pose problème.

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 ?