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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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 SQL : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager