Bonjour,
Je me heurte actuellement à un petit problème concernant des LEFT JOIN.
Voici la structure de mes tables :
Les champs g_id font références à un ID qui est dans la table cg_fiches.
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);
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
Ceci marche mais
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
ne marche pas !
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
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
Partager