Postgres ha un equivalente da parte del collegamento. Dovrai abilitare il modulo. È disattivato per impostazione predefinita.
Si chiama tablefunc. Supporta alcune interessanti funzionalità crosstab e il familiare "connect by" e "Start With". Ho trovato che funziona molto più eloquentemente e logicamente rispetto al CTE ricorsivo. Se non riesci a farlo funzionare dal tuo DBA, dovresti cercare il modo in cui Erwin lo sta facendo.
È abbastanza robusto da eseguire anche la query del tipo "distinta componenti".
Tablefunc può essere attivata eseguendo questo comando:
CREATE EXTENSION tablefunc;
Ecco l'elenco dei campi di collegamento appena sollevato dalla documentazione ufficiale.
Parameter: Description
relname: Name of the source relation (table)
keyid_fld: Name of the key field
parent_keyid_fld: Name of the parent-key field
orderby_fld: Name of the field to order siblings by (optional)
start_with: Key value of the row to start at
max_depth: Maximum depth to descend to, or zero for unlimited depth
branch_delim: String to separate keys with in branch output (optional)
Si dovrebbe dare un'occhiata alla pagina di documentazione. È ben scritto e ti darà le opzioni a cui sei abituato. (Nella pagina doc scorrere verso il basso, il suo vicino al fondo.)
Postgreql "Connect by" extension Di seguito si riporta la descrizione di ciò che mettere insieme tale struttura dovrebbe essere come. C'è un sacco di potenziale, quindi non lo farò giustizia, ma qui c'è un colpo per darti un'idea.
connectby(text relname, text keyid_fld, text parent_keyid_fld
[, text orderby_fld ], text start_with, int max_depth
[, text branch_delim ])
Una vera e propria interrogazione sarà simile a questa. Connectby_tree è il nome della tabella. La riga che inizia con "AS" è il modo in cui le colonne vengono denominate. Sembra un po 'sottosopra.
SELECT * FROM connectby('connectby_tree', 'keyid', 'parent_keyid', 'pos', 'row2', 0, '~')
AS t(keyid text, parent_keyid text, level int, branch text, pos int);
Penso che ci si vuole utilizzare [CON RECURSIVE] (http://www.postgresql.org/docs/9.3/static/queries-with.html) –
http://stackoverflow.com/ q/22626394/330315 –