--sql FOR xml
create table ClassInfo
(
CID int identity(1,1), --本表ID
Cnumber int, --班级人数
CName varchar(10) --班级名称
)
go
insert ClassInfo
select 20,'一年级1班'
union select 20,'一年级2班'
union select 20,'一年级3班'
union select 20,'一年级4班'
go
select * from ClassInfo
--Students (CID 班级表外键,SID学生信息表ID学生的学号就是,SName)
create table Students
(
[SID] int identity(1,1), --学号
CID int, --班级ID
SName varchar(10) --姓名
)
go
insert into Students
select 1,'张1'
union select 1,'张2'
union select 1,'张3'
union select 1,'张4'
union select 2,'张5'
union select 2,'张6'
--CID 本表ID,Cnumber 班级人数,CName
select * from ClassInfo
select * from Students
select * from ClassInfo WHERE CName='一年级1班'
SELECT CID,Cnumber,CName FROM ClassInfo WHERE CName='一年级1班' FOR xml raw
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml raw
--raw to auto 把行数据变成节点数据
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml auto
--root属性 添加根结点
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml auto ,root('studentInfo')
--Elements 属性 把属性变成了节点的方式
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml auto ,root('studentInfo'),Elements
--path属性
SELECT ClassInfo.CID,ClassInfo.Cnumber,ClassInfo.CName,Students.SID,Students.SName
FROM ClassInfo JOIN dbo.Students ON Students.CID=dbo.ClassInfo.CID
ORDER BY CID FOR xml path ,root('studentInfo')
/*
Path 是以数据基本结构也就是以字段为结点的形式返回Xml文档(这样说不专业可能容易理解)
Raw 是把数据里所有的字段以属性的方式显示出Xml文档
Auto 自动关连到相应的项目,和Raw一样在不加Elements属性时以这种方式返回数据
*/