Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get XML from different Tables

Good day to you!

I have a question. Can't get how combine 2 tables in 1 result XML.

Here is the sample

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

Wanted result:

<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 here

New remark (edited)

answered by John Cappelletti, but need put all this inside third table.

Here is new 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') 

Wanted result (finally):

<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>
like image 931
Arkadiy V. Avatar asked Jan 26 '26 11:01

Arkadiy V.


1 Answers

Added for the Extended Question

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')

Returns

<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>
like image 129
John Cappelletti Avatar answered Jan 29 '26 06:01

John Cappelletti



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!