Ich gebe ein XML-Ergebnis für eine Abfrage zurück.SQL Server für Xml-Pfad
zwei Tabellen:
**Foo**
FooId int
FooName varchar(10)
**Bar**
BarId int
FooId int (FK)
BarName varchar(10)
ich eine select-Anweisung wie:
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
Dies funktioniert, wie ich es und gibt die richtigen Ergebnisse zu erwarten. Ich erkannte, während ich es entwickelte, musste ich die Filterklauseln sowohl in der Unterauswahl als auch in den geschachtelten Auswahlen in der Where-Klausel duplizieren, um die korrekten Ergebnisse zu erhalten.
Ich möchte sicherstellen, dass es keinen besseren Weg gibt, dies zu tun. Ein Mitarbeiter erwähnte die Verwendung von Aliasen, um die doppelten Klauseln zu entfernen, bin mir aber nicht sicher, wie das alles erreichen würde.
Ist das notwendig, oder gibt es einen besseren Weg?