17. marts 2003 - 16:35Der er
6 kommentarer og 1 løsning
count = 0 på NULL værdier
Hej,
Jeg sidder med tre tabeller i en MS SQL 7.0 database, hvor jeg gerne vil lave et lidt specielt count på der desværre giver mig problemer.
De tre tabeller:
User UID (int) ...
UserRoleMap UID (INT) RID (INT) Status (smallint)
Role RID (INT) Name (navarchar 50) Description (ntext)
Det jeg gerne vil tælle på, er hvor mange brugere der har de forskellige roller. Der er nogle roller hvor der endnu ikke er tilknyttet brugere, og der vil jeg gerne have udskrevet et 0 (nul), dette skulle derfor give en liste der ser nogenlunde sådan ud:
Når jeg laver en normal sammensætning af de tre tabeller med en LEFT OUTER JOIN, kommer der ikke nogen på Administrator (small), og derfor kan jeg desværre ikke bruge det. Jeg har fundet frem til at NULL værdier normalt ikke tælles med, men er der nogen måde at komme uden om dette?
Hmmm - mig der ikke lige havde forklaret godt nok... Der er endnu en parameter i User tabellen, der hedder shouldUpdate, og denne skal være som en del af WHERE clausen - fx WHERE User.shouldUpdate = 1
jeg så at det andet virker, men hvis du kan hjælpe mig med at smide den sidste table på, så er pointene dine :D
select R.Name, count(UR.UID) from UserRoleMap UR right join Role R on (UR.RID=R.RID and UR.UID in (Select UID from [User] where shouldUpdate =1)) group by UR.RID, R.Name
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.