需要来自Oracle SQL查询

时间:2017-07-05 12:04:33

标签: sql xml oracle

在我正在处理的项目中,我们需要创建一个XML并将其传递给接口,并且在创建包含父表及其后续子表的数据的XML时遇到问题。

父表: - 部门应该像

dept_id     dept_name
1           History
2           Biology

CHild table: - 员工应该像

emp_id      emp_name     dept_id
1           Helen         1
2           Martha        1 
3           John          1
4           Carol         2

因此生成的XML应该与department id = 1

类似
`<department>
<dept_id>1</dept_id>
<dept_name>History</dept_name>
</department>
<employee>
<emp_id>1</emp_id>
<emp_name>Helen</emp_name>
</employee>
<employee>
<emp_id>2</emp_id>
<emp_name>Martha</emp_name>
</employee>
<employee>
<emp_id>3</emp_id>
<emp_name>John</emp_name>
</employee>'

如果有人知道更好的方法,那么它会有很大的帮助。 提前致谢

1 个答案:

答案 0 :(得分:1)

这样的事情(部门节点中的员工节点因此它不是片段):

SELECT XMLELEMENT(
         "department",
         XMLFOREST(
           e.dept_id AS "dept_id",
           d.dept_name AS "dept_name"
         ),
         XMLAGG(
           XMLELEMENT(
             "employee",
             XMLFOREST(
               emp_id AS "emp_id",
               emp_name AS "emp_name"
             )
           )
         )
       )
FROM   employees e
       INNER JOIN departments d
       on ( e.dept_id = d.dept_id )
WHERE  e.dept_id = 1
GROUP BY e.dept_id, d.dept_name;