自从做SQL以来,我已经有一段时间了,所以我只想在这方面寻求帮助。
我想一个没有临时表的解决方案,如果可能的话,但总比没有好,将为每一个解决方案感到高兴!不太确定如果没有它这是可能的...
我有两张table。
表前提
| 服务地址标识|类别标识|
| - -|- -|
| 一个|五个|
| 2个|八个|
| 三个|20个|
| 四个|六个|
表类别-这只是对应于上述premises_id 3的切片。我需要为每个premises获取其类别和所有父项。
| 标识符|父标识|姓名|
| - -|- -|- -|
| 20个|十七岁|名称A|
| 十七岁|十一|名称B|
| 十一|五个|名称C|
| 五个|零值|名称D|
结果应如下所示:
| 服务地址标识|类别标识|类别名称|
| - -|- -|- -|
| 三个|20个|名称A|
| 三个|十七岁|名称B|
| 三个|十一|名称C|
| 三个|五个|名称D|
我所写的就是这个递归查询,用来获取category中的树:
with recursive categories as (
select id, id_path, parent_id, name from category
union all
select c.id, c.id_path, c.parent_id, c.name from category c
join categories ctgs on ctgs.parent_id = c.id
) select * from categories
;
变懒了,现在会做prtscreens。它的结果很好,就像这样。有parents-path本身,如id_path
,但不想依赖它。值得注意的是,并不总是孩子比父母有更高的ID!
-----------但是我不太确定如何连接它。感觉我遗漏了一些非常明显的东西,但是实际上,它的连接条件是什么?或者我应该使用临时表吗?我使用的是Mariadb 10.5。
谢谢你们的时间。
1条答案
按热度按时间btqmn9zl1#
您希望递归查询生成具有类别ID和祖先类别ID的行(因此每个类别ID对应多个行);该路径不容易连接,而且id/父id不足以连接单个id并获得所有祖先。
比如说:
(显然,如果您需要,可以再次加入类别以获取名称)