2010-04-13 50 views
0

對於幾個小時我就是如何使內連接這些表(表簡化了此問題):MySQL的內連接問題或其它相等溶液

消息具有下列字段:

| ID |內容|

message_relation有以下字段:

| ID | message_id | sender_id | receiver_id |

用戶有以下字段:

| ID |名稱|

我想這個表做是receiver_id來選擇一個用戶的所有消息,但也想知道發件人的名字。我曾嘗試類似:

SELECT * 
FROM (
`message_relation` 
) 
JOIN `message` ON `message`.`id` = `message_relation`.`message_id` 
JOIN `user` ON `message_relation`.`receiver_id` = `user`.`id` 
WHERE `receiver_id` = '10' 

與此查詢我只得到receiver_id名,但無法弄清楚如何將這個查詢中發現SENDER_ID了。任何幫助,將不勝感激!

回答

3

你可以不止一次user表更加入,使用表的別名:

SELECT m.content, 
     us.name as 'sender', 
     ur.name as 'receiver' 
FROM message_relation mr 
JOIN message m ON (m.id = mr.message_id) 
JOIN user us ON (us.id = mr.sender_id) 
JOIN user ur ON (ur.id = mr.receiver_id); 
0

替換 '?????' with your receiver_id:

SELECT message.id AS mid, message.content AS mcontent, user.name AS uname 
FROM message,message_relation,user 
WHERE 
message_relation.message_id=message.id 
AND message_relation.sender_id=user.id 
AND message_relation.receiver_id='?????' 

唷!沒有測試,但你明白了。