需要来自 Oracle SQL 查询的父表和子表的 XML
Posted
技术标签:
【中文标题】需要来自 Oracle SQL 查询的父表和子表的 XML【英文标题】:Need XML from parent and child table from Oracle SQL query 【发布时间】:2021-11-18 02:05:56 【问题描述】:在我正在处理的一个项目中,我们需要创建一个 XML 并将其传递给一个接口,我在创建一个包含来自父表及其后续子表的数据的 XML 时遇到了问题。
父表:- 部门应该是这样的
dept_id dept_name
1 History
2 Biology
儿童表:- 员工应该是这样的
emp_id emp_name dept_id
1 Helen 1
2 Martha 1
3 John 1
4 Carol 2
所以生成的 XML 应该类似于部门 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>'
如果有人知道这样做的更好方法,那将有很大帮助。 提前致谢
【问题讨论】:
比什么更好的方法?你现在在做什么,你有什么问题?您还有一个 XML 片段,而不是一个有效的文档 - 没有根节点。您确定这就是您要查找的格式吗? 【参考方案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;
【讨论】:
非常感谢...我只是在寻找这种查询。 @user1654571 如果此答案或任何其他答案回答了您的问题,您可以将其标记为已接受(勾选答案左侧投票按钮下方的绿色复选标记) - 这会让其他用户知道您的问题已解决。 再次感谢...完成并感谢您帮助新手 :)以上是关于需要来自 Oracle SQL 查询的父表和子表的 XML的主要内容,如果未能解决你的问题,请参考以下文章