Надеюсь, я смогу объяснить проблему, которая меня озадачивает. У меня есть следующий иерархический набор данных (это только подмножество 34K записей)Иерархический запрос
PARENT_ID CHILD_ID EXAM
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
TUDA12982 TUDA12983 N
TUDA12983 TUDA15322 J
TUDA12983 TUDA15323 J
Это представление дерева
TUDA12982 N
- TUDA12984 J
-- TUDA999 J
- TUDA12983 N
-- TUDA15322 J
-- TUDA15323 J
Что мне нужно, это список всех записей с экзаменом = N и базовый экзамен = 'J' записи, которые могут быть вложенными.
select *
from test1
connect by prior child_id = parent_id
start with child_id = 'TUDA12982'
order siblings by child_id;
дает мне
PARENT_ID CHILD_ID EXAM
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
TUDA12982 TUDA12983 N
TUDA12983 TUDA15323 J
TUDA12983 TUDA15322 J
Но что мне нужно
TUDA12802 TUDA12982 N
TUDA12982 TUDA12984 J
TUDA12984 TUDA999 J
проникающего должен остановиться, когда я сталкиваюсь с ЭКЗАМЕН = запись 'N'.
Мне нужно что-то вроде предложения «остановиться с».
select *
from test1
connect by prior child_id = parent_id
start with child_id = 'TUDA12982'
stop with exam = 'N'
order siblings by child_id;
Как это можно сделать?
Вот и все. Так просто и элегантно. Я думал, что столкнулся с действительно сложной проблемой. Большое спасибо. Je gaat het pas zien als je het doorhebt. (Йохан Кройдж) –