Aracılığıyla paylaş


Örnek: Çalışan bilgileri alınıyor

Bu örnek, bir çalışan kimliği ve her çalışan için çalışan adını alır.De AdventureWorks2008R2 veritabanı, EmployeeID elde edilebilir dan BusinessEntityID sütununda Employee tablo.Çalışan adları elde edilebilir dan Person tablo.The BusinessEntityID column can be used to join the tables.

İÇİN xml açık istediinizi varsayalım dönüştürme aşağıdaki gösterildiği gibi xml oluşturmak için:

<Employee EmpID="1" >
  <Name FName="Ken" LName="Sánchez" />
</Employee>
...

Hiyerarşi içinde iki düzeyde olduğundan, iki yazarsınız SELECT sorgular ve uygulama BİRLİĞİ tüm.Bu değerleri alır ilk sorgu, <Employee> öğe ve alt öznitelikleri.Sorgu atar 1 olarak Tag için değer <Employee> öğesi ve boş olarak Parent, çünkü onu en üst düzey öğe.

SELECT 1    as Tag,
       NULL as Parent,
       E.BusinessEntityID AS [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID;

İkinci sorgu budur.Değerleri alır <Name> öğesi.Bunu atar 2 olarak Tag için değer <Name> öğesi ve 1 olarak Parent Etiket değeri tanımlayan <Employee> olarak üst.

SELECT 2 as Tag,
       1 as Parent,
       E.BusinessEntityID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID;

Bu sorguları ile birleştirme UNION ALl, uygulama FOR XML EXPLICITve gerekli ORDER BY yan tümce tümce tümce.Satır kümesi ilk sıralamada gerekir BusinessEntityID ve daha sonra adı null değerleri böylece adıyla ilk görünür.for xml yan tümce tümce tümce olmadan aşağıdaki sorguyu yürüterek, Evrensel görebilirsiniz tablo üretilir.

En son sorgu budur:

SELECT 1    as Tag,
       NULL as Parent,
       E.BusinessEntityID as [Employee!1!EmpID],
       NULL       as [Name!2!FName],
       NULL       as [Name!2!LName]
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID
UNION ALL
SELECT 2 as Tag,
       1 as Parent,
       E.BusinessEntityID,
       FirstName, 
       LastName 
FROM   HumanResources.Employee AS E
INNER JOIN Person.Person AS P
ON  E.BusinessEntityID = P.BusinessEntityID
ORDER BY [Employee!1!EmpID],[Name!2!FName]
FOR XML EXPLICIT;

Bu kısmi bir sonucudur:

<Employee EmpID="1">

<Name FName="Ken" LName="Sánchez" />

</Employee>

<Employee EmpID="2">

<Name FName="Terri" LName="Duffy" />

</Employee>

...

İlk SELECT belirtir adları için sütunlar sonuçtaki satır kümesi.Bu adları iki sütun gruplarını oluştururlar.Sahip bir grubu Tag değeri 1 , sütun adını tanımlar Employee bir öğe ve EmpID olarak öznitelik.Bir sütun grubu olan Tag değeri 2 sütununda tanımlar ve <Name> öğesi olarak ve FName ve LName olarak öznitelikleri.

Aşağıdaki tablo, sorgu tarafından oluşturulan kısmi satır kümesi gösterilmektedir:

Tag Parent  Employee!1!EmpID Name!2!FName Name!2!LName

--- ------  ---------------- ------------ ------------

1   NULL    1                NULL         NULL

2   1       1                Ken          Sánchez

1   NULL    2                NULL         NULL

2   1       2                Terri        Duffy

1   NULL    3                NULL         NULL

2   1       3                Roberto      Tamburello

...

Bu nasıl Evrensel satırları tablo sonuç xml ağacını üretmek için işlenir:

İlk satırı tanımlar Tag değeri 1.Bu nedenle, sahip bir sütun grubu Tag değeri 1 tanımlanmıştır, Employee!1!EmpID.Bu sütun tanımlayan Employee olarak öğenin adı.Bir <Employee> öğesi sonra oluşturulmuş olan EmpID öznitelikleri.Bu öznitelikler için karşılık gelen sütun değerleri atanır.

İkinci satır sahip Tag değeri 2.Bu nedenle, sahip bir sütun grubu Tag değeri 2 sütun adı Name!2!FName, Name!2!LName, tanımlanır.Bu sütun adları tanımlar Name olarak öğenin adı.A <Name> öğesi oluşturdu, FName ve LName öznitelikleri.Buna karşılık gelen sütun değerlerini daha sonra bu öznitelikler için atanır.Bu satırı tanımlayan 1 olarak Parent.Bu öğe alt önceki eklenen <Employee> öğesi.

Satır kümesi satır geri kalanı için bu işlem yinelenir.Not satırları sıralama Evrensel önemi tablo için xml açık de sırada satır kümesi işlemek ve istediğiniz xml oluşturur.

Ayrıca bkz.

Başvuru