【发布时间】:2017-05-14 05:53:07
【问题描述】:
我有两张如下表
表学生
PersonID firstName
1 John
2 Mike
表格标记
mark_id person_id subject marks
1 1 English 50
2 1 Maths 75
下面的查询给出如下的xml
select XMLElement( "Students" ,
(select XMLAgg( XMLElement("Student" ,
XmlElement( "Student_id","id") ,
XmlElement( "First_Name","firstname")
))
FROM students )
)
AS "RESULT"
From dual
<Students>
<Student>
<Student_id>1</Student_id>
<First_Name>John</First_Name>
</Student>
<Student>
<Student_id>2</Student_id>
<First_Name>Mike</First_Name>
</Student>
<Students>
现在我需要用Marks 左连接表students
并创建一个如下所示的 xml
<Students>
<Student>
<Student_id>1</Student_id>
<First_Name>John</First_Name>
<Marks>
<subject>English</subject>
<mark>50</mark>
<subject>Maths</subject>
<mark>75</mark>
</Marks>
</Student>
<Student>
<Student_id>2</Student_id>
<First_Name>Mike</First_Name>
<Marks/>
</Student>
<Students>
如果我编写选择查询,它将为第一个学生返回两行,因为它有 2 行要加入到第二个标记表中。
【问题讨论】:
-
取决于要求是什么。如果有多个分数并且每个学生应该只有一行,则可以使用
group by子句。 -
@AluanHaddad 学生可以有多个科目和分数,有时没有分数。所以我使用左连接
-
Students as Student left join Marks as Mark on .... group by ...