Bonjour,

Je me heurte actuellement à un petit problème concernant des LEFT JOIN.

Voici la structure de mes tables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE TABLE cg_images (id int(7), g_id int(7));
CREATE TABLE cg_fiches (id int(7), titre varchar(255));
CREATE TABLE cg_articles (id int(7), g_id int(7));
 
INSERT INTO cg_fiches VALUES(1, "Première fiche");
INSERT INTO cg_fiches VALUES(2, "Deuxième fiche");
 
INSERT INTO cg_images VALUES (1, 2);
INSERT INTO cg_images VALUES (2, 2);
INSERT INTO cg_images VALUES (3, 1);
 
INSERT INTO cg_articles VALUES (1, 1);
INSERT INTO cg_articles VALUES (2, 1);
INSERT INTO cg_articles VALUES (3, 2);
Les champs g_id font références à un ID qui est dans la table cg_fiches.
Je cherche à faire une requête SELECT qui me liste toutes les fiches présente en indiquant combien d'articles existent faisant référence à chaque fiche (ça marche) ET en même temps combien d'images existent faisant référence à cette fiche. Autrement dit

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SELECT cg_fiches. * , count( cg_articles.id ) 
FROM cg_fiches
LEFT JOIN cg_articles ON cg_articles.g_id = cg_fiches.id
GROUP BY cg_articles.g_id
LIMIT 0 , 30
Ceci marche mais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
SELECT cg_fiches. * , count( cg_images.id ) , count( cg_articles.id ) 
FROM cg_fiches
LEFT JOIN cg_images ON cg_images.g_id = cg_fiches.id
LEFT JOIN cg_articles ON cg_articles.g_id = cg_fiches.id
GROUP BY cg_images.g_id, cg_articles.g_id
LIMIT 0 , 30
ne marche pas !

J'ai l'impression que j'ai une erreur de conception dans ma requête (lol). Pour info je suis sur MySQL 4.0.x (j'ai pas posté dans le forum MySQL parce que je pense que c'est plutôt une erreur de conception plus qu'une erreur spécifique au SGBD que j'utilise).

Si quelqu'un peut éclairer ma lanterne...

Merci !

@+ Jonathan