Mehrere Ebenen

Tabelle:

ID | ID2
772 | 773
773 | 774
773 | 776
775 | 778
776 | 777


Input:

772


gewünschtes Ergebnis:

Alle die über beliebig viele Ebenen zu der ID 772 gehören, also

772
773
774
776
777

Mein erster Denkansatz war ein UNION ALL zu benutzen,
da ich aber nicht weiß wieviele Ebenen es gibt habe ich diesen gleich wieder fallen lassen.
Bevor ich mich jedoch daran mache das Problem im Progamm zu lösen hoffe ich noch auf ein paar Ideen hier :slight_smile:



test=*# select * from ebenen ;
 id1 | id2
-----+-----
 772 | 773
 773 | 774
 773 | 776
 775 | 778
 776 | 777
(5 rows)

test=*# with recursive t1 as (select * from ebenen where id1=772 union all select ebenen.* from ebenen, t1 where ebenen.id1=t1.id2) select id1 as id from t1 union select id2 from t1 order by id;
 id
-----
 772
 773
 774
 776
 777
(5 rows)

Andreas

Dem ist nix mehr hinzuzufügen :slight_smile:
Danke!