Obtenir du XML à partir de différentes tables

Bonne journée!

J'ai une question. Impossible d'get comment combiner 2 tables dans 1 résultat XML.

Voici l'exemple

DECLARE @t1 table (ID int identity(1,1), SomeField varchar(50)) DECLARE @t2 table (ID int identity(1,1), SomeField varchar(50), AnotherField varchar(50)) INSERT INTO @t1 (SomeField) VALUES ('rec1'),('rec2'),('rec3'),('rec4') INSERT INTO @t2 (SomeField,AnotherField) VALUES ('s106','here'),('s12','just'),('s13','sample') SELECT * FROM @t1 AS FirstTable SELECT * FROM @t2 AS AnotherTable 

Résultat recherché:

 <Root> <FirstTable ID="1" SomeField="rec1" /> <FirstTable ID="2" SomeField="rec2" /> <FirstTable ID="3" SomeField="rec3" /> <FirstTable ID="4" SomeField="rec4" /> <AnotherTable ID="1" SomeField="s106" AnotherField="here" /> <AnotherTable ID="2" SomeField="s12" AnotherField="just" /> <AnotherTable ID="3" SomeField="s13" AnotherField="sample" /> </Root> 

dbfiddle ici

Nouvelle remarque (éditée)

répondu par John Cappelletti , mais besoin de mettre tout cela à l'intérieur de la troisième table.

Voici un nouveau code:

 DECLARE @t1 table (ID int identity(1,1), tID int, SomeField varchar(50)) DECLARE @t2 table (ID int identity(1,1), tID int, SomeField varchar(50), AnotherField varchar(50)) DECLARE @t3 table (ID int identity(1,1), field1 varchar(50), field2 varchar(50)) INSERT INTO @t1 (tID,SomeField) VALUES (1,'rec1'),(1,'rec2'),(1,'rec3'),(1,'rec4') INSERT INTO @t2 (tID,SomeField,AnotherField) VALUES (1,'s106','here'),(1,'s12','just'),(1,'s13','sample') INSERT INTO @t3 (field1,field2) VALUES ('field1 Value','field2 Value') 

Résultat recherché (enfin):

 <ThirdTable ID="1" field1="field1 Value" field2="field2 Value"> <FirstTable ID="1" tID="1" SomeField="rec1" /> <FirstTable ID="2" tID="1" SomeField="rec2" /> <FirstTable ID="3" tID="1" SomeField="rec3" /> <FirstTable ID="4" tID="1" SomeField="rec4" /> <AnotherTable ID="1" tID="1" SomeField="s106" AnotherField="here" /> <AnotherTable ID="2" tID="1" SomeField="s12" AnotherField="just" /> <AnotherTable ID="3" tID="1" SomeField="s13" AnotherField="sample" /> </ThirdTable> 

Ajouté pour la question étendue

 Select * ,(select cast( isnull((Select * From @t1 for xml raw('FirstTable')),'') +isnull((Select * From @t2 for xml raw('AnotherTable')),'') as xml) ) From @t3 for xml raw('ThirdTable') 

Résultats

 <ThirdTable ID="1" field1="field1 Value" field2="field2 Value"> <FirstTable ID="1" tID="1" SomeField="rec1" /> <FirstTable ID="2" tID="1" SomeField="rec2" /> <FirstTable ID="3" tID="1" SomeField="rec3" /> <FirstTable ID="4" tID="1" SomeField="rec4" /> <AnotherTable ID="1" tID="1" SomeField="s106" AnotherField="here" /> <AnotherTable ID="2" tID="1" SomeField="s12" AnotherField="just" /> <AnotherTable ID="3" tID="1" SomeField="s13" AnotherField="sample" /> </ThirdTable> 
 Select [root] = cast((Select * From @t1 for xml raw('FirstTable')) +(Select * From @t2 for xml raw('AnotherTable')) as xml) For XML Path(''),Type 

Résultats

 <root> <FirstTable ID="1" SomeField="rec1" /> <FirstTable ID="2" SomeField="rec2" /> <FirstTable ID="3" SomeField="rec3" /> <FirstTable ID="4" SomeField="rec4" /> <AnotherTable ID="1" SomeField="s106" AnotherField="here" /> <AnotherTable ID="2" SomeField="s12" AnotherField="just" /> <AnotherTable ID="3" SomeField="s13" AnotherField="sample" /> </root>