Aracılığıyla paylaş


Örnek: Kımlığı ve IDREFS yönergelerini belirtme

Öğesi özniteliği olarak belirlenebilir bir IDtype özniteliği ve IDREFSözniteliği sonra görüneceği için başvurmak için kullanılabilir Bu belge içi bağlantılar sağlar ve birincil anahtar ve yabancı anahtar ilişkileri ilişkisel veritabanlarında benzer.

Bu örnekte gösterilmektedir nasıl IDve IDREFSdirektifleri öznitelikler oluşturmak için kullanılabilecek IDve IDREFStürleri. Kimliklerini tamsayı değerler olamaz çünkü bu örnek kimliği değerleri dönüştürülür. Diğer bir deyişle, onlar döküm türüdür. Önek ID 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>

SalesOrderIDListÖzniteliği < Customer >öğedir başvurduğu çok değerli bir özniteliğin SalesOrderIDözniteliği < SalesOrder >öğesi. Bu bağlantıyı kurmak için SalesOrderID, öznitelik ilan etti IDtürü ve SalesOrderIDListözniteliği < Customer>, eleman ilan etti IDREFStürü. Birden fazla sipariş, müşteri talep edebilirsiniz çünkü IDREFStürü kullanılır.

Öğeleri IDREFStürü birden fazla değer de. Bu nedenle, aynı etiket, üst ve anahtar sütun bilgileri yeniden ayrı bir select yan tümcesi kullanmak zorunda. ORDER BYMakyaj satır sırası sağlamak zorunda IDREFSdeğerler görünür birlikte kendi üst öğe altında gruplanmış.

Bu istediğiniz xml üretir sorgudur. Sorgu kullanır IDve IDREFSsütun adlarını türleri üzerine direktifleri (SalesOrder!2!SalesOrderID!ID, Customer!1!SalesOrderIDList!IDREFS).

USE AdventureWorks2012;
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;

Ayrıca bkz.

Başvuru

Kullanımı ile for xml Açık modu