2016-09-16 84 views
-2

可以說I 3表稱爲SQL接合3個表

UID | User | Task 

UID和用戶具有FK關係和加入UID.crossuserid = User.crossuserid(相同值) 用戶和任務具有FK關係和加入User.UserID = Task.UserID

怎麼會查詢,以便我在任務字段的參數,然後我加入了三個表來,然後返回一個字段如UID

用戶名

我試過這個,並不奇怪,它沒有工作

Select username 
FROM UID 
inner join User 
ON UID.crossuserid = User.crossuserid 
inner join Task 
ON User.UserID = Task.UserID 
WHERE task.tasktypeid = '3' 
+4

什麼意思'它沒有工作'。你能給一個樣品嗎? – Jens

+2

您使用哪種rdbms? – swe

回答

0

試試這個:

SELECT UID.USERNAME 
FROM UID 
LEFT JOIN USER 
ON UID.CROSSUSERID = USER.CROSSUSERID 
LEFT JOIN TASK 
ON USER.USERID = TASK.USERID 
WHERE TASK.TASKTYPEID = '3' 
0

你應該包括每一個表,你加入一個別名:

Select i.username 
FROM UID i 
inner join User u 
ON i.crossuserid = u.crossuserid 
inner join Task t 
ON u.UserID = t.UserID 
WHERE t.tasktypeid = '3' 
0

user是一個SQL關鍵字。嘗試[User],看看是否有效。

此外,inner是默認的連接類型。你不需要包括那個。所以:

SELECT username FROM UID JOIN [User] ON UID.crossuserid = [User].crossuserid JOIN Task ON [User].UserID = Task.UserID WHERE task.tasktypeid = '3'

由於哈桑所提到的,它總是一個好主意,嘗試左連接,以確保你不會試圖加入一個空行。內部連接丟棄一個表沒有匹配記錄的結果。