数据库mysql:一个表的一个字段和另一个表的两个字段之间的多个关系

xkrw2x1b  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(355)

我尽量简单地解释。假设我的mysql/mariadb数据库中有两个表。

PEOPLE (id,name)

ID  NAME
0   John
1   Jack
2   Jane
3   Lily
4   Ruth
... ...

RELATIONSHIP (id1,id2,rel)

ID1  ID2  REL
0    1    father
1    0    son
3    0    boss
2    3    daughter
3    2    mother
...  ...  ...

第一个表包含一些人的名字,第二个表包含人与人之间的关系,每一行从表中告诉我两个人之间的关系 PEOPLE ). 例如表的第一行 RELATIONSHIP 告诉我 John (ID 0) 是孩子的父亲 Jack (ID 1) .
如何编写一个查询来提供下表?

ID1  NAME1  ID2  NAME2  REL
0    John   1    Jack   father
1    Jack   0    John   son
3    Lily   0    John   boss
2    Jane   3    Lily   daughter
3    Lily   2    Jane   mother
...  ...    ...  ...    ...

只有一个查询就可以吗?我不知道该怎么做 join 两者 ID1 以及 ID2 到表格的不同行 PEOPLE .
这个表格只是一个例子来解释我需要什么。
提前谢谢!

qfe3c7zg

qfe3c7zg1#

只需使用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
34gzjxbg

34gzjxbg2#

你只用两个 join 学生:

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;

相关问题