mysql 从桥接 table 将 table 连接到自身

mysql join a table to itself from a bridging table

我有两个 table 通过 id 相互引用。我想使用第二个 table 将第一个 table 中的给定名称连接到与一个或多个人的关系。参见示例

id name Adress
1 Jonas Sturmwind Street 12 5431
2 Thomas New Banksy Home 14 5432
3 Therese Redcarpet Willow 1 6623
4 Nicko Redcarpet Willow 1 6623
5 Sandra Mcmurdo Station

相关

related_from_id related_to_id Relation
1 2 "Sibling"
1 5 "Sibling"
3 4 "Parent"

给定一个名字,我如何进行 mysql 查询以提供任何可能的兄弟姐妹的姓名和地址。

例如,我使用参数“Jonas”进行查询并期望结果集为

关系

Name Related to Adress
Jonas "Thomas" "New Banksy Home 14 5432"
"Sandra" "Mcmurdo Station"

我假设您想沿 related table 任意方向行走(left-right 或 right-left)。

你可以这样做:

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 的回答已经涵盖了。