Bonjour,

J'ai une table Profile, Projet et Items

A savoir qu'un profile a 1 ou n Projet et qu'un projet a 1 ou n items

Je souhaite avoir dans une même requête le nombre d'items par projet et le nombre de projet par profile.

Quand je fais la requete suivante
Code : 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
SELECT 
	pf.ProfileId,
	pj.ProjectId,
	it.ItemsId
FROM
	dbo.Profiles AS pf
 
LEFT OUTER JOIN
	dbo.Projects AS pj
ON
	pf.ProfileId = pj.ProfileIdFK
LEFT OUTER JOIN
	dbo.Items AS it
ON
	pj.ProjectId = it.ProjectIdFK
GROUP BY 
	pf.ProfileId
J'ai le résultat suivant
ProfileId----------ProjectId----------ItemsId
62-----------------15-------------------23
62-----------------15-------------------21
65-----------------16-------------------24
66----------------NULL----------------NULL

Maintenant je fais la requete suivante pour avoir le nombre d'items par projet
Code : 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
SELECT 
	pf.ProfileId,
	pj.ProjectId,
	COUNT (it.ItemsId) AS ["Nombre d'items"]
FROM
	dbo.Profiles AS pf
 
LEFT OUTER JOIN
	dbo.Projects AS pj
ON
	pf.ProfileId = pj.ProfileIdFK
LEFT OUTER JOIN
	dbo.Items AS it
ON
	pj.ProjectId = it.ProjectIdFK
GROUP BY 
	pf.ProfileId,
	pj.ProjectId
J'ai le résultat suivant
ProfileId----------ProjectId----------Nombre d'Items
----62-----------------15---------------------2-----------
----65-----------------16---------------------1-----------
----66----------------NULL------------------NULL-------

Etmaintenant je souhaite connaitre le nombre de projet avec le nombre d'items par profile, c'est ici que je fais pas la bonne requete, car il me compte 2 fois le projet 15, ce qui est normal parce que je compte aussi le nombre d'items.
Code : 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
SELECT 
	pf.ProfileId,
	COUNT(pj.ProjectId) AS ["Nombre de Projets"],
	COUNT (it.ItemsId) AS ["Nombre d'Items"]
FROM
	dbo.Profiles AS pf
 
LEFT OUTER JOIN
	dbo.Projects AS pj
ON
	pf.ProfileId = pj.ProfileIdFK
LEFT OUTER JOIN
	dbo.Items AS it
ON
	pj.ProjectId = it.ProjectIdFK
GROUP BY 
	pf.ProfileId
Le résultat est le suivant
ProfileId----------Nombre projets----------Nombre d'Items
----62--------------------2-----------------------------2-----------
----65--------------------1-----------------------------1-----------
----66-----------------NULL-------------------------NULL-------

Je cherche donc à avoir pour le profile 62 1 seul projet avec ses 2 items

Merci d'avance