Jointures et COUNT(*) GROUP BY
bonjour,
Actuellement j'ai deux requêtes pour effectuer:
- Pour selectionner les données dont j'ai besoin à l'aide de jointures
- Pour récupérer un COUNT(*) GROUP BY pour connaitre un nombre n
Je procède comme ceci :
Code:
1 2 3 4 5 6
| SELECT `directory_general`.*, `directory_category`.*, `directory_type`.*, `directory_lang`.* FROM `directory_general`
INNER JOIN `directory_category` ON directory_general.site_id = directory_category.site_id
INNER JOIN `directory_type` ON directory_general.site_id = directory_type.site_id
INNER JOIN `directory_lang` ON directory_general.site_id = directory_lang.site_id
WHERE (active = 1)
ORDER BY `date_add` DESC |
Code:
1 2 3 4 5
| SELECT G.site_id, D.sitename, S.directory_id, COUNT(*) AS nb_galleries
FROM fhg_galleries AS G
INNER JOIN fhg_sites AS S ON G.site_id = S.site_id
INNER JOIN directory_general AS D ON S.directory_id = D.site_id
GROUP BY D.site_id; |
Et voici la structure de mes tables :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| mysql> DESCRIBE `fhg_sites`;
+------------+--------------+------+-----+---------+----------------+ | FIELD | Type | NULL | KEY | DEFAULT | Extra |
+------------+--------------+------+-----+---------+----------------+ | site_id | int(11) | NO | PRI | NULL | AUTO_INCREMENT |
| join_url | varchar(512) | NO | | | |
| banner_url | varchar(512) | NO | | | |
+------------+--------------+------+-----+---------+----------------+ 3 rows IN SET (0.00 sec) mysql> DESCRIBE `fhg_galleries`;
+------------+--------------+------+-----+---------+----------------+ | FIELD | Type | NULL | KEY | DEFAULT | Extra |
+------------+--------------+------+-----+---------+----------------+ | gallery_id | int(11) | NO | PRI | NULL | AUTO_INCREMENT |
| site_id | int(11) | NO | MUL | | |
| DESC | varchar(512) | NO | | | |
| nb_pics | int(11) | NO | | | |
+------------+--------------+------+-----+---------+----------------+ 4 rows IN SET (0.00 sec) mysql> DESCRIBE `fhg_images`;
+------------+--------------+------+-----+---------+----------------+ | FIELD | Type | NULL | KEY | DEFAULT | Extra |
+------------+--------------+------+-----+---------+----------------+ | image_id | int(11) | NO | PRI | NULL | AUTO_INCREMENT |
| gallery_id | int(11) | NO | MUL | | |
| url_full | varchar(512) | NO | | | |
| url_thumb | varchar(512) | NO | | | |
+------------+--------------+------+-----+---------+----------------+ mysql> DESCRIBE `directory_general`;
+----------------+--------------+------+-----+---------+----------------+ | FIELD | Type | NULL | KEY | DEFAULT | Extra |
+----------------+--------------+------+-----+---------+----------------+ | site_id | int(11) | NO | MUL | NULL | AUTO_INCREMENT |
| sitename | varchar(96) | NO | | NULL | |
| url | varchar(512) | NO | | NULL | |
| DESC | text | NO | | NULL | |
| VIEW | int(11) | NO | | NULL | |
+----------------+--------------+------+-----+---------+----------------+ 10 rows IN SET (0.01 sec) |
En fait ce que je veux récupérer c'est le nombre de galleries présente pour un site (s'il y en a) à l'aide COUNT(*) AS nb_galleries GROUP BY `directory_general.site_id;` dans ma requête principale et ainsi avoir toutes les informations nécessaires dans une seule requête.
Merci