我不太了解如何获取引用TABLE的输入并利用它返回正确的值。
基本上,我想做的是将LEVEL-OBJECT对作为输入。
从那对中,我想从中获得一个SERIAL。
但是,由于OBJECT不是唯一的,我还希望输出包括来自OBJECT-LEVEL对的任何其他SERIAL,其中OBJECT与原始输入相同。
基本上,我需要列出一个清单,但我不知道该怎么做。
此外,在此示例中未显示,但我需要检查列表是否为NULL并从原始LEVEL遍历树,直到我有一个序列号返回。
我能够获得的是一个返回值,但如果我的输入是:
LEVEL : D
OBJECT : 2
我应该得到:
X2, X3
TABLE:
LEVEL(UNIQUE) | OBJECT | PARENT | ROOT | SERIAL
A | NULL | NULL | A | NULL
B | NULL | A | A | NULL
C | 1 | B | A | X1
D | 2 | C | A | X2
E | 2 | D | A | X3
这是我使用的基础,我尝试了25种不同的方法来获取结果列表,但无济于事:
SELECT Serial FROM Object AS Output
WHERE (LEVEL = 'E' AND OBJECT = 2);
答案 0 :(得分:0)
要获取具有相同Object
的所有行的值,请仅对其进行过滤(WHERE Object = ?
)。
要搜索非NULL序列,您需要使用recursive common table expression向上移动树,直到找到有效的序列:
WITH RECURSIVE Output AS (
SELECT Level, Parent, Serial
FROM Object
WHERE Object = 2
UNION ALL
SELECT Object.Level, Object.Parent, Object.Serial
FROM Object
JOIN Output ON Object.Level = Output.Parent
WHERE Output.Serial IS NULL
)
SELECT Serial -- use DISTINCT to avoid duplicates
FROM Output
WHERE Serial IS NOT NULL;