MYSQL内部联接从ID获取多个名称

时间:2015-06-09 11:43:06

标签: mysql

我正在尝试使用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)

您能否告诉我如何解决此问题?

提前谢谢。

2 个答案:

答案 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
)

这应该从每个邮件中获取发件人和收件人,这些邮件存储在数据库中。