bonjour,

Actuellement j'ai deux requêtes pour effectuer:
  1. Pour selectionner les données dont j'ai besoin à l'aide de jointures
  2. Pour récupérer un COUNT(*) GROUP BY pour connaitre un nombre n


Je procède comme ceci :

  1. 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
  2. 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