Mysql:一个表的一个字段与另一个表的两个字段之间的多重关系
Posted
技术标签:
【中文标题】Mysql:一个表的一个字段与另一个表的两个字段之间的多重关系【英文标题】:Mysql: Multiple relations between one field of a table and two fields from another table 【发布时间】:2018-06-13 10:19:28 【问题描述】:我尝试尽可能简单地解释它。 假设我的 MySql/MariaDB 数据库中有 2 个表。
人(身份证,姓名) 身份证名称 0 约翰 1 杰克 2简 3 百合 4 露丝 …… 关系(id1,id2,rel) ID1 ID2 相对 0 1 父亲 1 0 儿子 3 0 老板 2 3 女儿 3 2 妈妈 …………第一个表包含一些人的名字,第二个包含人与人之间的关系,每一行告诉我两个人之间的关系来自表PEOPLE
)。
例如表RELATIONSHIP
的第一行告诉我John (ID 0)
是Jack (ID 1)
的父亲。
我如何编写一个查询来提供下表?
ID1 名称1 ID2 名称2 相对 0 约翰 1 杰克父亲 1 杰克 0 约翰的儿子 3 莉莉 0 约翰 老板 2简3莉莉女儿 3百合2简妈妈 ……………………是否可以只使用一个查询?
我不知道如何将join
ID1
和 ID2
都添加到表 PEOPLE
的不同行。
这些表只是解释我需要的示例。
提前致谢!
【问题讨论】:
需要引用并加入PEOPLE两次;对表的每个引用都需要一个不同的别名,并且从它们引用的字段需要由别名限定。 【参考方案1】:您只需使用两个join
s:
select r.*, p1.name as name1, p2.name as name2
from relationship r join
people p1
on r.id1 = p1.id join
people p2
on r.id2 = p2.id;
【讨论】:
伙计……我意识到我的问题有多愚蠢……非常感谢! :-)【参考方案2】:只需使用 2 个连接。
SELECT
r1.ID as ID1,
r1.NAME as NAME1,
r2.ID as ID2,
r2.NAME as NAME2,
relationship.REL as REL
FROM relationship
JOIN PEOPLE as r1 ON relationship.ID1 = r1.ID
JOIN PEOPLE as r2 ON relationship.ID2 = r2.ID
【讨论】:
伙计……我意识到我的问题有多愚蠢……非常感谢! :-)以上是关于Mysql:一个表的一个字段与另一个表的两个字段之间的多重关系的主要内容,如果未能解决你的问题,请参考以下文章