Bonjour,
j'ai une table project_categories du genre:
id, name, parent_id ...
et une table projects
id, project_category ...
j'ai besoin de ressortir le nombre de projets actifs pour chaque categories et dans le meme temps le nombre de projets dans une categorie parent
j'ai ecrit la requetes suivante:
mais phpmyadmin me reponds:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT t1.id, t1.name, t1.parent_id, IFNULL( ( SELECT COUNT( * ) FROM projects AS t2 WHERE (t2.project_category in (SELECT id FROM project_categories WHERE parent_id = t1.id) or t2.project_category = t1.id) AND t2.status =1 GROUP BY t2.project_category ) , 0 ) AS total_projects, t1._order FROM `project_categories` AS t1 ORDER BY t1.parent_id, t1.name;
#1242 - Subquery returns more than 1 row
si j'execute la sous requete:
(j'ai fait expres de vous ajouter la colonne project_category ici pour mieux voir mon probleme, en prenant 1 comme parent_id, 7 et 8 ont comme parent_id 1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT project_category, COUNT( * ) FROM projects AS t2 WHERE (t2.project_category in (SELECT id FROM project_categories WHERE parent_id = 1) or t2.project_category = 1) AND t2.status =1 GROUP BY t2.project_category
alors il me sort 2 lignes:
project_category COUNT( * )
7 1
8 2
Comment faire la pour qu'il me sorte 3 directement?
attention si je fait :
la il me sort bien 3 directement mais si je met cette sous requete dans la requete principale du haut alors la il me dit qu'il ne reconnait pas le champs t1.id
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT SUM( nbr ) AS total FROM ( SELECT COUNT( * ) AS nbr FROM projects AS t2 WHERE ( t2.project_category IN (SELECT id FROM project_categories WHERE parent_id =1 ) OR t2.project_category =1 ) AND t2.status =1 GROUP BY t2.project_category ) AS t4
Est il seulement possible de faire ce que je veux ici?
Partager