Цитата(Валентин85 @ 2.10.2012, 12:37 ) | только 1-й уровень и те данные 5-го уровня если они есть!!! Если данных 5-го уровня нету - то 1-й уровень не выводить.
|
для третьего уровня.
| Код | SQL> with t as (select 1 id ,null parent ,'11111' val from dual 2 union all select 2, 1,'22222' from dual 3 union all select 3, 2, '33333' from dual 4 union all select 4,null,'44444' from dual 5 union all select 5,4,'5555' from dual 6 ) 7 ,rq (id,parent,root,val,lvl ) 8 as (select id,parent, id ,val,1 from t where parent is null 9 union all 10 select t.id,t.parent, rq.root,t.val,rq.lvl+1 11 from rq 12 inner join t on rq.id = t.parent 13 ) 14 select id,parent,val 15 from (select rq.* 16 ,max(lvl) over (partition by root) max_lvl 17 from rq) 18 where max_lvl >= 3 and lvl in (1,3) 19 order by 1 20 / ID PARENT VAL ---------- ---------- ----- 1 11111 3 2 33333
|
Добавлено через 6 минут и 18 секунд Кросспостер, копипастер https://www.google.ru/search?oq=%D0%95%D1%81%D1%82%D1%8C+%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0+%D1%81+%D0%BF%D0%BE%D0%BB%D1%8F%D0%BC%D0%B8+ID%2C+Name%2C+ID_Parent.+%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%BE+%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8E+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5.&sugexp=chrome,mod=4&sourceid=chrome&ie=UTF-8&q=%D0%95%D1%81%D1%82%D1%8C+%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0+%D1%81+%D0%BF%D0%BE%D0%BB%D1%8F%D0%BC%D0%B8+ID%2C+Name%2C+ID_Parent.+%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%BE+%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8E+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5.#q=%22%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%BE+%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D1%8E+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5.%22&hl=ru&newwindow=1&prmd=imvns&filter=0&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=f2ce7efa68d53d5a&biw=1163&bih=826 |