2016-07-21 16 views
1

Wenn ich Select-Abfrage für zwei Tabelle geschrieben habe, möchte ich empfohlen werden, wie Abfrage geschrieben wird.Abfrage mit Kind auswählen

unten gibt es zwei Tabellen (Pseudo-ddl).

CREATE PARENT(
IDX int primary key, 
NAME varchar2(40) 
) 

CREATE CHILD(
PARENT_IDX int, 
NAME varchar2(40) 
) 

und dies ist der Stand der Tabelle.

Parent:

IDX /NAME 
1 /PARENT1 
2 /PARENT2 
3 /PARENT3 

Kind:

PARENT_IDX/NAME 
1  /CHILD1 
1  /CHILD2 
2  /CHILD3 
3  /CHILD4 
3  /CHILD5 
3  /CHILD6 

I wie unten übergeordnete Liste mit allen Kindern in jsp Seite ausdrucken möchte:

IDX /NAME  /CHILD 
1 /PARENT1 /CHILD1,CHILD2 
2 /PARENT2 /CHILD3 
3 /PARENT3 /CHILD4,CHILD5,CHILD6 

Was ist die beste Lösung für dies mit SQL in Oracle?

Antwort

1

Wenn Sie Oracle 11g oder höher verwenden, können Sie die Eltern-Kind-Tabellen und LISTAGG() JOIN tun zusammen, um die CSV zu erhalten Formatierung Sie wollen:

SELECT p.IDX, 
     p.NAME, 
     LISTAGG(COALESCE(c.NAME, 'NA'), ',') "CHILD" 
FROM PARENT p 
LEFT JOIN CHILD c 
    ON p.IDX = c.PARENT_IDX 
GROUP BY p.IDX 
+0

oh, danke. Ich denke, es ist die beste Lösung. Ich erkenne jetzt LISTAGG. Danke. –

Verwandte Themen