Avatar billede Slettet bruger
26. april 2009 - 19:39 Der er 4 kommentarer og
1 løsning

Count og Join problem

Jeg har følgende query:

SELECT LeadersAndMembers.ID, LeadersAndMembers.Name, Sum(LeadersAndMembers.NumOfMembers) As NumOfMembers
FROM
(
    SELECT Groups.ID, Groups.Name, Count(*) As NumOfMembers
    FROM Groups
    LEFT JOIN Members ON Members.GroupID = Groups.ID
    GROUP BY Groups.ID, Groups.Name
    UNION ALL
    SELECT Groups.ID, Groups.Name, Count(*) As NumOfMembers
    FROM Groups
    LEFT JOIN Leaders ON Leaders.GroupID = Groups.ID
    GROUP BY Groups.ID, Groups.Name
) AS LeadersAndMembers
GROUP BY LeadersAndMembers.ID, LeadersAndMembers.Name
ORDER BY NumOfMembers DESC

Jeg skal have alle grupper, uanset om der er Leaders eller Members tilknyttet og så hvor mange members/leaders der er. Dette virker fint, ud over at gruppen "test" som er oprettet, vises med NumOfMembers = 2, men der er hverken en leader eller member tilknyttet. Hvordan fixer jeg den?
Avatar billede 2c Nybegynder
26. april 2009 - 21:33 #1
Et hurtigt forslag, uden at have kigget det 100% igennem.

Brug INNER JOIN istedet for LEFT JOIN.
Avatar billede Slettet bruger
26. april 2009 - 21:47 #2
Så kommer "test" gruppe ikke frem
Avatar billede 2c Nybegynder
26. april 2009 - 22:47 #3
Så skal du nok over i en subselect.

Noget i stil med det her.

SELECT Groups.ID, Groups.Name, Count(*) As NumOfMembers
    FROM Groups
    LEFT JOIN Members ON Members.GroupID = Groups.ID
    GROUP BY Groups.ID, Groups.Name

Erstattes med

SELECT Groups.ID, Groups.Name, (SELECT COUNT(*) from Members WHERE Members.GroupID =Groups.ID)
    FROM Groups
Avatar billede Slettet bruger
27. april 2009 - 11:18 #4
Det virker perfekt. Smid et svar.
Avatar billede 2c Nybegynder
27. april 2009 - 11:20 #5
Ok. Super. Svar kommer her.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester