我试着尽可能简单地解释它。 假设我的 MySql / MariaDB 数据库中有2个表。
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
对不同行p->A::foo()
行的方式。
这个表只是解释我需要的一个例子。
提前致谢!
答案 0 :(得分:2)
您只需使用两个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;
答案 1 :(得分: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