2016-07-21 214 views
1

當我寫兩個表的選擇查詢時,我想推薦如何寫查詢。與孩子選擇查詢

下面,有兩個表(僞ddl)。

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

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

這是表的狀態。

家長:

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

兒童:

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

我想打印父列表,在JSP頁面中所有的孩子象下面這樣:

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

什麼是最好的解決辦法這在Oracle中使用SQL?

回答

1

如果您正在使用Oracle 11g或更高版本,你可以做加盟,共同父和子表,並使用LISTAGG()得到CSV格式你想:

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

哦,謝謝你。我認爲這是最好的解決方案。我現在認識到LISTAGG。謝謝。 –