2014-09-19 123 views
2

我有一个 '消息' 表的MySQL SELECT同一列包括列:与多个条件

message_id, sender_id, receiver_id

和A'成员的表,该表包括列:

id, username

我的发件箱查询如下

SELECT message_id, username AS 'receiver_username', sender_id, 
receiver_id, time_sent, time_read, replied_to_id,item_id_reference, 
subject FROM messages, members WHERE messages.sender_id = members.id 
AND members.username = ? 

我想我的查询返回基于发件人username

WHERE messages.sender_id = members.id AND members.username = ? 

而且收件人message_id基于用户名返回的receiver_id

我怎么会去在一个查询中这样做呢?

+1

可以提供样本数据和预期的结果,目前尚不清楚你想要达到的目标。 – Bulat 2014-09-19 21:32:14

+0

他想获得members.username两次:一次ON members.id = messages.sender_id,再次ON members.id = messages.receiver_id – 2014-09-19 21:32:59

回答

2

您需要加入成员表两次,一次发送者名称和一次收件人名称。 一个简单的例子:

SELECT 
    s.user_name sender, 
    r.user_name receiver 
FROM 
    messages m 
JOIN 
    members s ON 
    m.sender_id = s.member_id 
JOIN 
    members r ON 
    m.receiver_id = r.member_id 
+1

我想你在JOIN子句中的别名后面加上ON – Ruslan 2014-09-19 21:33:32

+0

是的,我做了: - (.Tnaks为编辑 – Gervs 2014-09-19 21:36:50

+0

完美,谢谢 – iCode101 2014-09-19 21:50:44

0

这可以是加入members表两次替代:

SELECT 
    message_id, username, sender_id, 
    receiver_id, time_sent, time_read, replied_to_id,item_id_reference, 
    subject 
FROM 
    messages msg INNER JOIN 
    members m ON m.id IN (msg.receiver_id, msg.sender_id) 
AND m.username = ?