2016-04-09 182 views
0

我們有多對多的關係,這些是相同的和非分層數據的細節。與多對多關係的sql查詢

用戶名測試1 >>找到團隊>>而找別人的隊

Table Team (Team Table) 
    Id Name 
    1 Ninja 
    2 Maverick 
    3 Transformer 

Table User (User Table) 
    Id Name Email 
    1 test1 [email protected] 
    2 test2 [email protected] 
    3 test3 [email protected] 

Table Team_USER_Map (User Map) 
    ID User_Id Team ID 
    1 1  1 
    2 1  2 
    3 2  3 
    4 2  1 
    5 3  1 
    6 3  2 
    7 3  3 

問題陳述的成員:

取決於用戶名,我需要找到同一個團隊的所有其他用戶。

因此,對於用戶名='test1',我需要找到屬於同一團隊的所屬團隊和其他用戶。

+2

請添加您被卡住的查詢 –

回答

1

試試這個:

DECLARE @Name as nvarchar (50)  
    SET @Name = 'test1' 

    SELECT u.Name as UserName, u.Email, t.Name as TeamName 
    FROM Team as t INNER JOIN Team_USER_Map as tum ON t.Id = tum.Team_ID 
    INNER JOIN User as u ON u.Id = tum.User_Id 
    WHERE u.Name LIKE @Name OR tum.Team_ID = 
    (
     SELECT t.Id 
     FROM Team as t INNER JOIN Team_USER_Map as tum ON t.Id = tum.Team_ID 
     INNER JOIN User as u ON u.Id = tum.User_Id 
     WHERE u.Name LIKE @Name 
    ) 

我認爲這是你想要達到的目標。 WHERE子句的第一部分很容易,因爲它返回用戶名稱。

在第二部分中,您必須使用SELECT WITHIN SELECT語句來獲取屬於鍵入名稱的用戶組的所有用戶。

我希望它有幫助和足夠清楚。

祝你好運!