Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UFZ3A-0003w7-3n for pgsql-it-generale@arkaria.postgresql.org; Tue, 12 Mar 2013 23:56:08 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.72) (envelope-from ) id 1UFZ39-0000IL-Ji for pgsql-it-generale@arkaria.postgresql.org; Tue, 12 Mar 2013 23:56:07 +0000 Received: from makus.postgresql.org ([2001:4800:7903:4::125]) by malur.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UFZ38-0000IF-Di for pgsql-it-generale@postgresql.org; Tue, 12 Mar 2013 23:56:06 +0000 Received: from outrelay03.libero.it ([212.52.84.103]) by makus.postgresql.org with esmtp (Exim 4.72) (envelope-from ) id 1UFZ36-000202-A8 for pgsql-it-generale@postgresql.org; Tue, 12 Mar 2013 23:56:05 +0000 X-CTCH-Spam: Unknown X-CTCH-RefID: str=0001.0A0C0201.513FC093.0006,ss=1,re=0.000,fgs=0 X-libjamoibt: 1587 Received: from wmail41 (172.31.0.230) by outrelay03.libero.it (8.5.140.03) id 512DF1BA01FCC5FC for pgsql-it-generale@postgresql.org; Wed, 13 Mar 2013 00:56:02 +0100 Message-ID: <31257393.22523601363132562986.JavaMail.defaultUser@defaultHost> Date: Wed, 13 Mar 2013 00:56:02 +0100 (CET) From: "manno_it@libero.it" Reply-To: "manno_it@libero.it" To: pgsql-it-generale@postgresql.org Subject: PostsegreSQL 9.2 Recursive Queries MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_1908015_3833058.1363132562986" X-SenderIP: 151.66.73.185 X-libjamv: 2Bs1A/Xl+a4= X-libjamsun: 00tBCAhbv87rDOCraFRMQ2delIaeWSoH X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-it-generale Precedence: bulk Sender: pgsql-it-generale-owner@postgresql.org ------=_Part_1908015_3833058.1363132562986 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Ciao, uso da pochi mesi PostgreSQL. In questo momento ho un problema con l'= interrogazione di una tabella organizzata secondo un sistema gerarchico, co= n un ID e un ID_PARENT. Ho cercato un po' online e compreso che devo utiliz= zare 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 giardino= 3 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 =3D 'our_product' UNION ALL SELECT p.sub_part, p.part, p.quantity FROM included_parts pr, parts p WHERE p.part =3D 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=C3=A8 il record che ha NULL nel camp= o 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 farl= o. Qualcuno mi puo indicare dove trovare la soluzione?Mille grazie in anticipo= ,MB ------=_Part_1908015_3833058.1363132562986 Content-Type: text/html;charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Ciao, uso da pochi mesi PostgreSQL.= In questo momento ho un problema con l'interrogazione di una tabella organ= izzata 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 br= eve di che cosa ho bisogno.


=

Ho una tabella con questi campi= :

ID_BENE (INT PRIMARY KEY etc..= ..)

ID_BENE_PARENT (INT)
=

NOME varchar(20)



ID_BENE_PARENT      ID= _BENE     NOME

NULL           &n= bsp;            = ;      1       =            casa

1      &nbs= p;            &= nbsp;           &nbs= p;       2      = ;            garage<= /p>

1     &= nbsp;           &nbs= p;            &= nbsp;        3    &n= bsp;            = ; giardino

3   &n= bsp;            = ;            &n= bsp;          4  &nb= sp;            =    orto

0  &= nbsp;           &nbs= p;            &= nbsp;           5 &n= bsp;            = ;    casa2

5 = ;            &n= bsp;            = ;             6=             &n= bsp;    garage2

5=             &nb= sp;            =             &nb= sp; 7            &nb= sp;     giardino2

7           &n= bsp;            = ;            &n= bsp;  8           &n= bsp;      orto2



Ho provato adattando al mio caso la seguent= e query (da qui):


WITH RECURSIVE included_pa=
rts(sub_part, part, quantity) AS (
    SELECT sub_part, part, quantity FROM parts WHERE part =3D 'our_product'
  UNION ALL
    SELECT p.sub_part, p.part, p.quantity
    FROM included_parts pr, parts p
    WHERE p.part =3D 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 a= vere in alto il livello 0, cio=C3=A8 il record che ha NULL nel campo ID_PAR= ENT, quindi, a seguire, gli altri record ordinati per ID_BENE con, sotto og= nuno, gli eventuali ID_BENE_PARENT.

Questo non riesco proprio a farlo.


Qualcuno mi puo indi= care dove trovare la soluzione?

= Mille grazie in anticipo,

MB
=


 
------=_Part_1908015_3833058.1363132562986--