0

In postgresql, habe ich folgende Tabellepostgresql Adjazenzliste Abfrage

c_relation_investor_main_pfk; c_relation_investor_sub_pfk 
"inv_ho";"inv_ho_r" 
"inv_ho";"inv_ho_sf" 
"inv_priv";"inv_com" 
"inv_priv";"inv_encor" 
"inv_priv";"inv_ho" 
"inv_prof";"inv_b4" 
"inv_prof";"inv_com" 
"inv_prof";"inv_encor" 
"inv_prof";"inv_ho" 
"inv_prof";"inv_pd" 
"inv_prof";"inv_ut" 

ein Kind Namen gegeben, wie kann ich alle Aszendenten Liste? Und wie kann ich bei einem übergeordneten Namen alle seine Nachkommen auflisten?

+1

sind sie zumindest rekursive? .. sonst nur seine 'wählen, wo colname = val' Frage –

+0

https://stackoverflow.com/questions/tagged/recursive-query+postgresql –

+0

@Vao Tsun ja, seine rekursiv. –

Antwort

0

Ich poste die Lösung, so dass es jemandem helfen kann, der mit ähnlichen Problemen konfrontiert wird.

WITH RECURSIVE source(main ,sub) AS (
SELECT character varying 'inv_ho', character varying 'inv_ho_r' 
UNION ALL 
SELECT tb_relation_investor.c_relation_investor_main_pfk, tb_relation_investor.c_relation_investor_sub_pfk 
FROM source JOIN tb_relation_investor ON (source.main=tb_relation_investor.c_relation_investor_sub_pfk) 
) 
SELECT * from source