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
J'ai le résultat suivant
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
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
J'ai le résultat suivant
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
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.
Le résultat est le suivant
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
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
Partager