Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Bir öğe özniteliği kimlik türü özniteliği olarak belirtilebilir ve IDREFS özniteliği buna başvurmak için kullanılabilir. Bu, belge içi bağlantıları etkinleştirir ve ilişkisel veritabanlarındaki birincil anahtar ve yabancı anahtar ilişkilerine benzer.
Bu örnek , ID ve IDREFS türlerinin özniteliklerini oluşturmak için ID ve IDREFS yönergelerinin nasıl kullanılabileceğini gösterir. Kimlikler tamsayı değerleri olmadığından, bu örnekteki kimlik değerleri dönüştürülür. Başka bir deyişle, tür dönüşümü yapılıyorlar. Kimlik değerleri için ön ekler kullanılır.
XML'yi aşağıdaki gibi 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 öğesinin <Customer> özniteliği, SalesOrderID öğesinin <SalesOrder> özniteliğine atanan çoklu değerli bir özniteliktir. Bu bağlantıyı kurmak için özniteliğinin SalesOrderIDID türünde bildirilmesi ve SalesOrderIDList öğesinin <Customer> özniteliğinin IDREFS türünde bildirilmesi gerekir. Bir müşteri birkaç sipariş isteyebileceğinden IDREFS , bu tür kullanılır.
IDREFS türü öğelerinin birden fazla değeri de vardır. Bu nedenle, aynı etiket, ebeveyn ve anahtar sütun bilgilerini yeniden kullanacak ayrı bir select ifadesi kullanmanız gerekir. Ardından ORDER BY öğesi, IDREFS değerlerini oluşturan satır dizisinin üst öğesi altında gruplanmış olduğundan emin olmalıdır.
Bu, istediğiniz XML'yi üreten sorgudur. Sorgu, sütun adlarındaki türleri değiştirmek için ID ve IDREFS yönergelerini, SalesOrder!2!SalesOrderID!ID ve Customer!1!SalesOrderIDList!IDREFS yönergeleriyle birlikte kullanır.
USE AdventureWorks2022;
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.CustomerID
ORDER BY [Customer!1!CustomerID] ,
[SalesOrder!2!SalesOrderID!ID],
[Customer!1!SalesOrderIDList!IDREFS]
FOR XML EXPLICIT;