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:

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;
mais phpmyadmin me reponds:
#1242 - Subquery returns more than 1 row

si j'execute la sous requete:
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
(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)

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 :

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
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

Est il seulement possible de faire ce que je veux ici?