我正在返回查询的 xml 结果。
给定两个表:
**Foo**
FooId int
FooName varchar(10)
**Bar**
BarId int
FooId int (FK)
BarName varchar(10)
我创建了一个选择语句,例如:
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 子句中的嵌套选择中复制过滤子句,以获得正确的结果。
我想确保没有更好的方法来做到这一点。一位同事提到使用别名来删除重复的子句,但不确定这将如何完成任何事情。
这是必要的,还是有更好的方法?