Вывод первого дочернего элемента

chikaginsk
Дата: 05.10.2015 11:08:31
Добрый день!
Вроде разобрался с выводом родительского элемента в иерархии.
with a as
(
select '1111111111' pid, ' ' prid from dual
union all
select '2222222222' pid, '7777777777' prid from dual
union all
select '3333333333' pid, '7777777777' prid from dual
)
SELECT a.pid, 
CONNECT_BY_ROOT a.pid as parent_pid
FROM a
START WITH a.prid = ' '
CONNECT BY PRIOR a.pid = a.prid

Теперь возникла потребность вывода первого попавшегося (т.е. единственного) дочернего элемента (к примеру, при заданном значении родительского элемента).
Т.е. чтобы выводилось только одно значение из примера (только pid='2222222222' или только pid='3333333333').
Есть ли такая возможность в Oracle?
Павел Воронцов
Дата: 05.10.2015 11:22:53
chikaginsk,

with a as (
select '1' as pid, ' ' as prid from dual union all
select '2' as pid, '1' as prid from dual union all
select '3' as pid, '1' as prid from dual ),
b as (select pid
, connect_by_root pid as parent_id
, row_number() over (partition by connect_by_root pid, level order by pid) as rn
from a
start with prid = ' '
connect by prior pid = prid)
select * from b where rn = 1
/
?
Perl'ун
Дата: 05.10.2015 11:23:33
chikaginsk,

Этот запрос возвращает только одну запись:

PID        PARENT_PID
---------- ----------
1111111111 1111111111


О каких "дочерних" элементах речь?
Elic
Дата: 05.10.2015 11:27:37
chikaginsk
дочернего элемента
Чудак, в твоих данных нет детей. А, следовательно, ты плохо понимаешь "иерархию".
chikaginsk
Дата: 05.10.2015 11:29:22
Perl'ун,

Этот запрос для примера привёл (вывод родительского).
Извиняюсь, что не пояснил подробнее.
Можно ли вывести первый попавшийся (единственный) элемент, зная pid родительского эл-та, на основе набора данных:
select '1111111111' pid, ' ' prid from dual
union all
select '2222222222' pid, '7777777777' prid from dual
union all
select '3333333333' pid, '7777777777' prid from dual
chikaginsk
Дата: 05.10.2015 11:37:40
Павел Воронцов,

В результате Вашего запроса выводятся все дочерние элементы. Мне нужно вывести единственный (любой) дочерний элемент.
Perl'ун
Дата: 05.10.2015 11:39:28
chikaginsk
Perl'ун,

Этот запрос для примера привёл (вывод родительского).
Извиняюсь, что не пояснил подробнее.
Можно ли вывести первый попавшийся (единственный) элемент, зная pid родительского эл-та, на основе набора данных:
select '1111111111' pid, ' ' prid from dual
union all
select '2222222222' pid, '7777777777' prid from dual
union all
select '3333333333' pid, '7777777777' prid from dual


в этих данных не иерархии.

а решение элементарное:

select * from t where prif='7777777777' and rownum = 1
chikaginsk
Дата: 05.10.2015 11:39:55
Elic,

Извиняюсь, не точно выразился, видимо.
Любой (единственный) дочерний элемент пытаюсь получить из данных в скобках
with a as
(
...
)

из примера.
Павел Воронцов
Дата: 05.10.2015 11:40:04
chikaginsk,

Чудак-человек, проверь свой тестовый набор еще раз - там родитель '1..., а дети ссылаются на '7.... И чем не устраивает мой запрос?
Павел Воронцов
Дата: 05.10.2015 11:41:00
chikaginsk
Павел Воронцов,

В результате Вашего запроса выводятся все дочерние элементы. Мне нужно вывести единственный (любой) дочерний элемент.
Да? Точно? Покажите тест.