SQL Server For Xml路径
我将返回查询的xml结果 给出两个表格:SQL Server For Xml路径,sql,sql-server,sqlxml,Sql,Sql Server,Sqlxml,我将返回查询的xml结果 给出两个表格: **Foo** FooId int FooName varchar(10) **Bar** BarId int FooId int (FK) BarName varchar(10) 我创建了一个select语句,如: SELECT FooId, FooName, ( SELECT BarId, FooId, BarName FROM Bar WHERE B
**Foo**
FooId int
FooName varchar(10)
**Bar**
BarId int
FooId int (FK)
BarName varchar(10)
我创建了一个select语句,如:
SELECT
FooId,
FooName,
(
SELECT
BarId,
FooId,
BarName
FROM
Bar
WHERE
Bar.FooId = Foo.FooId
AND Bar.BarName = 'SomeBar'
FOR XML PATH('Bar'), TYPE
)
FROM
Foo
WHERE
Foo.FooName = 'SomeFoo'
AND Foo.FooId IN
(
SELECT
Bar.FooId
FROM
Bar
WHERE
Bar.BarName = 'SomeBar'
)
FOR XML PATH('Foo'), TYPE
这与我期望的一样,并返回正确的结果。我意识到,在开发它的过程中,我需要复制where子句中的sub select和嵌套select中的筛选子句,以获得正确的结果
我想确定没有更好的方法来做这件事。一位同事提到使用别名删除重复的子句,但不确定这将如何实现
这是必要的,还是有更好的办法 假设您只想返回具有条形图的foo,并且需要在XML中保留条形图节点(即,连接将不起作用,因为它会使XML变平),那么没有办法将其简化很多。当然,您可以将Bar查询放入一个公共表表达式中,但如果这样做,整个过程实际上会变得更长