2013-11-02 49 views
1

我創建聊天(只爲兩個人聊天,而不是「全球」),我的表是這樣的:從一個記錄選擇兩個登錄

留言:

id | author | receiver | content | sent 

哪裏筆者器和接收器的ID從USERS

id | login | avatar 

,我想無論是從接收器和作者獲得用戶名和頭像的消息。我正在嘗試這樣的事情:

SELECT * FROM 
((SELECT messages.*,users.login as starter,users.avatar FROM messages 
    LEFT JOIN users ON messages.author = users.id 
    WHERE messages.receiver = 1) 
UNION 
(SELECT messages.*,users.login as test,users.avatar FROM messages 
    LEFT JOIN users ON messages.receiver = users.id 
    WHERE messages.author = 1) 
    ORDER BY id DESC LIMIT 5) tmp 
ORDER BY id ASC 

和其他幾個查詢,但我只能得到一個登錄名(無論是接收者或作者)。有沒有辦法做到這一點?

+0

U對於接收者和作者都使用相同的id(例如1) - >因爲它是關於同一個用戶的,所以只能獲得一次登錄。猜測他們應該是不同的... – wxyz

+0

但比我從數據庫中的一條記錄得到兩個結果.. – mmmm

+0

雙加入'USERS'表 – geomagas

回答

1

試試這個:

select * from messages m 
join users a on (m.author=a.id) 
join users r on (m.reciever=r.id) 

當然,你可以添加一個where條款對其進行過濾特定信息,作者或什麼的。

+0

非常感謝你:) – mmmm

+0

或其他。如何使用列列表? – Kermit

+0

@FreshPrinceOfSO你的意思是代替'*'?是的,這是一個選項,我猜... – geomagas