From: | "manno_it(at)libero(dot)it" <manno_it(at)libero(dot)it> |
---|---|
To: | pgsql-it-generale(at)postgresql(dot)org |
Subject: | PostsegreSQL 9.2 Recursive Queries |
Date: | 2013-03-12 23:56:02 |
Message-ID: | 31257393.22523601363132562986.JavaMail.defaultUser@defaultHost |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | Postg토토 핫SQL : Postg토토 |
Ciao, uso da pochi mesi PostgreSQL. In questo momento ho un problema con l'interrogazione di una tabella organizzata secondo un sistema gerarchico, con un ID e un ID_PARENT. Ho cercato un po' online e compreso che devo utilizzare una WITH RECURSIVE QUERY, cosa che fino a un certo punto funziona, se non per l'ordinamento. Spiego in breve di che cosa ho bisogno.
Ho una tabella con questi campi:ID_BENE (INT PRIMARY KEY etc....)
ID_BENE_PARENT (INT)
NOME varchar(20)
ho bisogno di un report di questo tipo:
ID_BENE_PARENT ID_BENE NOMENULL 1 casa1 2 garage1 3 giardino3 4 orto0 5 casa25 6 garage25 7 giardino27 8 orto2
Ho provato adattando al mio caso la seguente query (da qui):
WITH RECURSIVE included_parts(sub_part, part, quantity) AS (
SELECT sub_part, part, quantity FROM parts WHERE part = 'our_product'
UNION ALL
SELECT p.sub_part, p.part, p.quantity
FROM included_parts pr, parts p
WHERE p.part = pr.sub_part
)
SELECT sub_part, SUM(quantity) as total_quantity
FROM included_parts
GROUP BY sub_part
Cosa che funziona, se non fosse che non mi viene ordinata nel modo corretto: devo avere in alto il livello 0, cioè il record che ha NULL nel campo ID_PARENT, quindi, a seguire, gli altri record ordinati per ID_BENE con, sotto ognuno, gli eventuali ID_BENE_PARENT.Questo non riesco proprio a farlo.
Qualcuno mi puo indicare dove trovare la soluzione?Mille grazie in anticipo,MB
From | Date | Subject | |
---|---|---|---|
Next Message | ciifrancesco@tiscali.it | 2013-08-02 15:17:05 | problema Cinese in DB UTF8 |
Previous Message | Eugenio Trumpy | 2013-03-01 12:12:32 | Re: query concatenate |