Je kunt een left outer join
. gebruiken om alle gebruikers te pakken en vervolgens elke gebruiker weg te blazen waar een groep aan vastzit. De volgende zoekopdracht geeft u alleen de lijst met gebruikers waar er geen groep is:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
where
g.userid is null
Als u alle gebruikers wilt vinden die niet in een bepaalde groep zitten:
select
u.*
from
users u
left outer join groupusers g on
u.userid = g.userid
and g.groupid = @GroupID
where
g.userid is null
Dit zal alleen sluit de gebruikers in die specifieke groep uit. Elke andere gebruiker wordt geretourneerd. Dit komt omdat de groupid
voorwaarde is gedaan in de join
clausule, die de rijen beperkt, niet geretourneerd, dat is wat de where
clausule wel.