我有两个通过id相互引用的表。我想用第二个表将第一个表中的给定姓名与一个或多个人员的关系连接起来。看到示例
<表类>
id
名称
地址
tbody><<tr>1 乔纳斯 Sturmwind街12 5431 2托马斯。 新班克斯家14 5432 3 Therese 红毯柳树1 6623 4尼克 Redcarpet柳树6623 5桑德拉 麦克默多站 表类>
为了让你的结果
SELECT
p.name AS NAME,
p1.name AS relatedTo,
p1.Address
FROM
Person p,
Related r,
Person p1
WHERE r.related_from_id = p.id
AND r.related_to_id = p1.id
AND p.name = 'Jonas' ;
然而,如果关系是朝任何方向发展,@The Impater的答案已经涵盖了你。
我假设您希望沿任意方向(左-右或右-左)遍历related
表。
你可以这样做:
select p.name, o.name as related_to, o.address
from person p
join related r on p.id in (r.related_from_id, r.related_to_id)
join person o on r.related_from_id = p.id and o.id = related_to_id
or r.related_to_id = p.id and o.id = related_from_id
where p.name = 'Jonas'
为了让你的结果
SELECT
p.name AS NAME,
p1.name AS relatedTo,
p1.Address
FROM
Person p,
Related r,
Person p1
WHERE r.related_from_id = p.id
AND r.related_to_id = p1.id
AND p.name = 'Jonas' ;
然而,如果关系是朝任何方向发展,@The Impater的答案已经涵盖了你。
我假设您希望沿任意方向(左-右或右-左)遍历related
表。
你可以这样做:
select p.name, o.name as related_to, o.address
from person p
join related r on p.id in (r.related_from_id, r.related_to_id)
join person o on r.related_from_id = p.id and o.id = related_to_id
or r.related_to_id = p.id and o.id = related_from_id
where p.name = 'Jonas'