我正在尝试使用MYSQL中的INNER JOIN创建一个查询,但我无法正常工作。
这是我想要做的一个例子:
请注意,这些不是我正在处理的表格。我制作了两个简单的表来展示我想要实现的目标。
这是表索引关系的图像: http://oi62.tinypic.com/2ez5k3p.jpg
我想从 tb_people 获取" sender" 和" receiver" 名称并合并他们就是这样:
表示例
|发件人|接收器|
|约翰| MARY |
这是我尝试过的一个查询失败
SELECT
tb_people.p_name AS sender,
tb_people.p_name AS receiver
FROM
tb_people
INNER JOIN
tb_mail
ON (tb_people.id = tb_mail.sender_id)
AND (tb_people.id = tb_mail.receiver_id)
您能否告诉我如何解决此问题?
提前谢谢。
答案 0 :(得分:3)
您需要两个join
和表别名:
SELECT s.p_name AS sender, r.p_name AS receiver
FROM tb_mail m INNER JOIN
tb_people r
ON r.id = m.sender_id INNER JOIN
tb_people s
ON s.id = m.receiver_id;
如果您考虑on
条件:
ON (tb_people.id = tb_mail.sender_id) AND
(tb_people.id = tb_mail.reciever_id)
您会意识到只有当发件人和收件人是同一个人时才会出现这种情况。
答案 1 :(得分:0)
一个地方更容易!看看吧:
SELECT
tb_people.p_name AS sender,
tb_people.p_name AS receiver
FROM
tb_people
WHERE tb_people.id IN (
SELECT tb_mail.sender_id
FROM tb_mail
)
这应该从每个邮件中获取发件人和收件人,这些邮件存储在数据库中。