2017-07-05 18 views
1

在我正在處理的項目中,我們需要創建一個XML並將其傳遞給接口,並且在創建包含父數據的XML時遇到問題表及其隨後的子表。從Oracle SQL查詢中需要來自父表和子表的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>' 

如果有人知道這樣做的更好方法,那將是非常有幫助的。 在此先感謝

+1

比一個更好的辦法?你現在在做什麼,你有什麼問題?你也有一個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; 
+0

非常感謝... 我一直在尋找這種查詢。 – user1654571

+0

@ user1654571如果此答案或其他答案回答了您的問題,您可以將其標記爲已接受(在答案左側的投票按鈕下方勾選綠色複選標記) - 這會讓其他用戶知道您的問題已得到解決。 – MT0

+0

再次感謝... 完成並感謝您幫助newb :) – user1654571