提问人:Javohir Mirzo Fazliddinov 提问时间:4/14/2022 最后编辑:Javohir Mirzo Fazliddinov 更新时间:4/14/2022 访问量:325
MySQL 多层自引用嵌套联接
mysql multi layered self referencing nested join
问:
我有 2 张桌子。 和。tb_device
tb_site_object
tb_device
很简单:
| id | station_id |
|----|------------|
| 1 | 6 |
| 2 | 6 |
| 3 | 9 |
tb_site_object
看起来像这样:
| id | type | upper_site_id |
|----|---------|---------------|
| 1 | top | null |
| 2 | type2 | 1 |
| 3 | type3 | 2 |
| 4 | station | 3 |
| 5 | top | null |
| 6 | station | 5 |
表之间的关系是这样的:当列 in 等于 时,有很多设备。tb_site_object
type
tb_site_object
station
可以看出,表自我引用本身。带有 type 的行指向另一行 with type 和带有引用的行 with 和 自然,它们也会通过 引用并关闭攀爬循环。
由于行开始链,因此它们始终具有 的值。tb_site_object
station
type3
type3
type2
top
upper_site_id
top
null
upper_site_id
有一个 but: 类型可以指向上面的任何类型 破坏电台。station
假设我正确地解释了表格(希望如此),这是我的问题:
我需要进行一个 sql 查询以获取仅给定 的设备。id
tb_site_object
因此,如果 id 为 1,我必须爬到 4 并使用 进行连接。如果给定的 ID 为 3,则直接为 4。tb_device
这就是我获取电台的方式:
select
lvl1.type lvl1_type,
lvl1.upper_site_id lvl1_upper,
lvl2.type lvl2_type,
lvl2.upper_site_id lvl2_upper,
lvl3.type lvl3_type,
lvl3.upper_site_id lvl3_upper,
lvl4.type lvl4_type,
lvl4.upper_site_id lvl4_upper
from
tb_site_object as lvl1
left JOIN tb_site_object lvl2 ON lvl1.id = lvl2.upper_site_id
left JOIN tb_site_object lvl3 ON lvl2.id = lvl3.upper_site_id
left JOIN tb_site_object lvl4 ON lvl3.id = lvl4.upper_site_id
where
lvl1.type = 'business';
tb_devices 中的 EDIT 1 是 tb_site_object 的外键。station_id
id
编辑 2 类型列始终以顶部开头,以车站结束。顶部 -> Type2 -> Type3 ->站。只有车站才能上去,提早结束链条
答: 暂无答案
评论
station_id
tb_devices中的列指向 tb_site_object @JonArmstrongid