Örnek: Kimliği ve IDREFS yönergelerini belirtme
Bir öðenin öznitelik olarak belirlenmiş bir ID type özniteliği ve IDREFS özniteliği sonra kullanılabilir it. başvurmakBu belge içi bağlantılar sağlar ve birincil anahtar ve yabancı anahtar ilişkileri ilişkisel veritabanları benzer.
Bu örnekte gösterilmektedir nasıl ID ve IDREFS yönergeleri özniteliklerini oluşturmak için kullanılabilir ID ve IDREFS türleri.Bu örnekte kimliği değerleri kimliklerini tamsayı değerler olamaz çünkü dönüştürülür.Başka bir deyişle, bunlar casted türüdür.Önekler kimliği değerleri kullanılır.
Aşağıdaki gösterildiği gibi xml oluşturmak istediğinizi varsayalım:
<Customer CustomerID="C1" SalesOrderIDList=" O11 O22 O33..." >
<SalesOrder SalesOrderID="O11" OrderDate="..." />
<SalesOrder SalesOrderID="O22" OrderDate="..." />
<SalesOrder SalesOrderID="O33" OrderDate="..." />
...
</Customer>
The SalesOrderIDList attribute of the < Customer > element is a multivalued attribute that refers to the SalesOrderID attribute of the < SalesOrder > element.To establish this link, the SalesOrderID attribute must be declared of ID type, and the SalesOrderIDList attribute of the < Customer> element must be declared of IDREFS type.Birden fazla sipariş, Müşteri talep edebilirsiniz çünkü IDREFS türü kullanılır.
Öğeleri IDREFS türü de sahip birden fazla değer.Bu nedenle, aynı etiket, üst ve anahtar sütun bilgileri tekrar bir ayrı select yan tümce tümce tümce kullanmak zorunda.The ORDER BY then has to ensure that the sequence of rows that make up the IDREFS values appears grouped together under their parent element.
İstediğiniz xml üretir sorgudur.Sorguyu kullanır ID ve IDREFS sütun adları, türler üzerine gönderilen emirler (SalesOrder!2!SalesOrderID!ID, Customer!1!SalesOrderIDList!IDREFS).
USE AdventureWorks2008R2;
GO
SELECT 1 as Tag,
0 as Parent,
C.CustomerID [Customer!1!CustomerID],
NULL [Customer!1!SalesOrderIDList!IDREFS],
NULL [SalesOrder!2!SalesOrderID!ID],
NULL [SalesOrder!2!OrderDate]
FROM Sales.Customer C
UNION ALL
SELECT 1 as Tag,
0 as Parent,
C.CustomerID,
'O-'+CAST(SalesOrderID as varchar(10)),
NULL,
NULL
FROM Sales.Customer AS C
INNER JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerID
UNION ALL
SELECT 2 as Tag,
1 as Parent,
C.CustomerID,
NULL,
'O-'+CAST(SalesOrderID as varchar(10)),
OrderDate
FROM Sales.Customer AS C
INNER JOIN Sales.SalesOrderHeader AS SOH
ON C.CustomerID = SOH.CustomerIDORDER BY [Customer!1!CustomerID] ,
[SalesOrder!2!SalesOrderID!ID],
[Customer!1!SalesOrderIDList!IDREFS]
FOR XML EXPLICIT;