当我为两个表编写select查询时,我想建议如何编写查询。
下面,有两个表(伪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的最佳解决方案是什么?
答案 0 :(得分: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