2009-10-22 105 views
1

我有一個數據庫有3個表:用戶,組和組成員。SQL查詢顯示如果兩個用戶在同一組

users: 
id int 
username varchar(50) 

groups: 
id int 
name varchar(50) 

groupmembers: 
id int 
groupid int 
user int 

,如果他們在任何一組(沒有任何特別的一個,但任何組)成員共享鑑於兩個用戶ID,我如何使用一個查詢來確定。我希望查詢在共享任何成員資格時返回null,如果他們共享成員資格則不爲null。

回答

1

或者

select count(*) from groupmembers 
    where [email protected] 
    and groupid in 
     (select groupid from groupmembers where [email protected]) 

將以普通回組的計數。您可以通過更換計數*)測試計數以下:

IF(count(*)>0,1,Null) 
0

這裏有一個SQL如果只想返回「將返回這兩個用戶的

SELECT g1.id 
FROM groupmembers g1 join groupmembers g2 on g1.id = g2.id 
WHERE g1.user = @user1 
AND g2.user = @user2; 

所屬的組1'或'Null'您可以按如下方式包裝:

With groupcount as (
    SELECT count(*) gc 
    FROM groupmembers g1 join groupmembers g2 on g1.id = g2.id 
    WHERE g1.user = @user1 
    AND g2.user = @user2) 
SELECT Case When gc = 0 Then Null Else 1 End as SharedGroups 
FROM groupcount; 
相關問題