MYSQL内部连接从IDs获取多个名称
我试图在MYSQL中使用内部连接创建一个查询,但无法正常工作 下面是我正在尝试做的一个例子: 请注意,这些不是我正在处理的表。我制作了两张简单的表格来展示我正在努力实现的目标。 以下是表索引关系的图像: 我想从tb\U人员中获取“发送者”和“接收者”姓名,并将其组合为: 表格示例 |发送方|接收方| |约翰|玛丽| 下面是我尝试过但失败的查询之一MYSQL内部连接从IDs获取多个名称,mysql,Mysql,我试图在MYSQL中使用内部连接创建一个查询,但无法正常工作 下面是我正在尝试做的一个例子: 请注意,这些不是我正在处理的表。我制作了两张简单的表格来展示我正在努力实现的目标。 以下是表索引关系的图像: 我想从tb\U人员中获取“发送者”和“接收者”姓名,并将其组合为: 表格示例 |发送方|接收方| |约翰|玛丽| 下面是我尝试过但失败的查询之一 SELECT tb_people.p_name AS sender, tb_people.p_name AS receiver FR
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)
你能告诉我如何解决这个问题吗
提前感谢。您需要两个
join
s和表别名:
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)
您将认识到,只有当发送者和接收者是同一个人时,该条件才是正确的。a WHERE IN更容易!看看它:
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
)
这将从存储在数据库中的每封邮件中获取发件人和收件人。非常感谢。它就像一个符咒。这一直困扰着我一整天,现在它的工作。是的,就像您在“AND”中所说的,我强制查询带来共享ID的条目。