我有2张桌子
table 1
vic_id | part 1
----------------
11 ch
12 bo
13 dd
14 gm
15 mh
16 sh
17 vai
18 bal
19 gur
20 ma
21 ar
22 st
23 in
24 va
25 vi
table 2
parent || child
---------------
11 12
12 13
11 14
14 15
11 17
17 15
我想要以
结尾的结构11-14-15(ch-gm-mh)
11-17-15(ch-vai-mh)
我希望查询计数为2
我尝试使用
connect by parent=child
和start with parent
,但没有得到预期的结果。
提前致谢
答案 0 :(得分:0)
使用connect by
的分层查询允许您将两个级别连接在一起,例如儿童祖先。在您的情况下,您似乎希望以递归方式连接从根开始并在树中降序的值。
要实现最终结果,请使用WITH
查看嵌套子查询(例如,非测试查询)
WITH RECURSIVE
roots AS (
SELECT parent, part1
FROM table2
JOIN table1 on parent = vic_id
WHERE parent NOT IN (SELECT child FROM table2)),
res AS (
SELECT parent cur, part1 cur_part, parent ids, part1 parts
FROM roots
UNION ALL
SELECT
child cur,
part1 cur_part,
ids||'-'||child,
parts||'-'||part1
FROM res
JOIN table2 on cur = parent
JOIN table2 on child = vic_id
)
SELECT ids, parts
FROM res
WHERE ids like '11%';