2016-05-13 144 views
0

我有以下查詢:SQL與內部聯接和子查詢

SELECT * FROM thread where sender = 135 or receiver = 135 order by updatedttm desc 

上述查詢返回具有Sender ID和receiverid正確的記錄。 senderid和receiverid都出現在用戶表中。我想通過將用戶表連接到上面的查詢來獲取senderid和receiverid的名稱。有人可以幫助我嗎?

+0

您的數據樣本將有助於 – kellymandem

回答

5

你可以用join這個用戶表兩次,一次用發送者ID和接收者ID來得到名字。

SELECT t.*,usend.user_name sender_name, urec.user_name receiver_name 
FROM thread t 
JOIN users usend on usend.user_id = t.sender 
JOIN users urec on urec.user_id = t.receiver 
where sender = 135 or receiver = 135 
order by updatedttm desc 
0

我會去LEFT JOIN因爲它會顯示,即使發送者或接收者被刪除你的線程。

SELECT *, 
    sender.username AS sender_name, 
    receiver.username AS receiver_name 
FROM thread AS t 
LEFT JOIN users AS sender ON t.sender = sender.user_id 
LEFT JOIN users AS receiver ON t.sender = receiver.user_id 
WHERE sender = 135 OR receiver = 135 
ORDER BY 
updatedttm DESC