[是的,我已经在这里和谷歌搜索了这个问题的答案,但这有点难以查询。]
(MySQL数据库。)
messages table:
messageid
senderid
recipientid
people table:
personid
name
我希望发出一个返回以下内容的查询:
messageid sender_name recipient_name
1 larry jane
2 mark alice
等
以下没有做到,我希望它不会,但它是一个开始的地方:
select m.messageid, p.name as "sender_name", p.name as "recipient_name"
from messages m, people p
where m.senderid = p.personid and m.recipientid = p.personid
问题是我不知道如何在sql中专门引用发件人和收件人,因为它们是同一个join子句的一部分,如果这是有道理的。
感谢
答案 0 :(得分:2)
尝试:
select m.messageid, pSender.name as "sender_name", pRecipient.name as "recipient_name"
from messages m
inner join people pSender on m.senderId = pSender.personId
inner join people pRecipient on m.recipientid = pRecipient.personId
对于你的连接方法(我认为这应该有用......我对逗号连接不是很熟悉)
select m.messageid, p.name as "sender_name", p.name as "recipient_name"
from messages m, people pSender, people pRecipient
where m.senderid = pSender.personid and m.recipientid = pRecipient.personid
答案 1 :(得分:2)
您可以将同一个表连接到查询中两次,只需对其进行不同的别名,其中包括:
select m.messageid, s.name as "sender_name", r.name as "recipient_name"
from messages m
inner join people s on m.senderid = s.personid
inner join people r on m.recipientid = r.personid
答案 2 :(得分:1)
您的查询仅返回从某人发送给自己的邮件。类似的东西:
select m.messageid, p1.name as sender_name, p2.name as recipient_name
from messages m,
join people p1
on m.senderid = p1.personid
join people p2
on m.recipientid = p2.personid
那就是你需要一个发送者加入和一个接收者加入