rekurencyjny selekt w oracle i postgresql

0

Witam serdecznie może ktoś mi pomoże bo mam problemy z napisaniem selecta :D

mam sobie tabele "menu" zawierającą kilka kolumn m.in :

 

#  id PK

#  parent_id FK to menu_id (czyli do tej samej tabeli)


#  title ccharacter

teraz mam następujące rekordy

id: 2 parent_id : 1
id: 3 parent_id : 2
id: 4 parent_id: 2
id: 5 parent_id 4
id: 6 parent_id: 5
id: 7 parent_id 6
id: 8 parent_id: 3
id: 9 parent_id : 8

id: 10 parent_id 1
id: 11 parent_id 10

i potrzebuję selecta który po podaniu 1 paramentu menu_id zwróci mi id jego menu oraz wszystki jego submenu czyli jeśli podam menu_id = 2
to otrzymam manu o id :2, 3, 4, 5, 6,7 ,8 ,9

jeśli podam 3 to otrzymam menu o id: 3, 8, 9

zapytanie musi działać zarówno pod oracle jak i postgresql ... :/

na moje oko musi to być takie ala rekurencyjne zapytanie

1
with recursive cte as 
(
select id, parent from t where parent is null
and id=3
union all
select t.id, t.parent from cte JOIN t on t.parent=cte.id
)
select id from cte;
0

hmm fajnie tylko raczej tak :

 
WITH recursive cte AS 
(
SELECT id, parent_id FROM menu WHERE parent_id = 1
AND id =2 
UNION ALL
SELECT t.id, t.parent_id FROM cte 
JOIN menu  t ON t.parent_id=cte.id
)
SELECT id FROM cte;

tylko że nie zadziala pod oracle w postgresql śmiga :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1