2017-12-28 64 views
2

BizTalkアダプター(SQLまたはWCF-SQL)を使用してマルチレベルの階層スキーマを作成しようとしています。私のクエリは、私はSQLアダプタを使用してスキーマを生成するとき、私は私が何をしたい、この構造にBizTalkアダプターは階層スキーマを生成します

enter image description here

を取得し、この

SELECT 
    CustomerQueueMessage.customer_queue_ID AS CustomerQueueMsgID, 
    CustomerMaster.customer_ID    AS [CustomerID], 
    CustomerAddressType.address_type_ID  AS [AddressTypeID],   
    CustomerSalesRep.sales_rep_type_code AS [SalesRepTypeCode] 
FROM CustomerQueue AS CustomerQueueMessage 
INNER JOIN dbo.MDM_Customer    AS CustomerMaster  ON (CustomerQueueMessage.customer_queue_ID = CustomerMaster.customer_queue_ID) 
INNER JOIN dbo.MDM_CustomerAddressType  AS CustomerAddressType ON (CustomerAddressType.customer_queue_ID = CustomerMaster.customer_queue_ID) 
INNER JOIN dbo.MDM_CustomerSalesRep  AS CustomerSalesRep  ON (CustomerSalesRep.customer_queue_ID  = CustomerMaster.customer_queue_ID) 
FOR XML AUTO, TYPE, ELEMENTS, XMLDATA 

のようなものです

enter image description here

CustomerSalesRepあるCustomerAdですドレスタイプCustomerSalesRepは、CustomerAddressType(両方ともすぐに、CustomerMaster)と同じレベルになります。

FOR XML文を削除してWCF-SQLアダプタを使用してスキーマを生成すると、階層がなくなり、すべての列が同じレベルになります。

アイデア?私はWCF-SQLアダプタを使ってそれをやりたいのですが、SQLもOKです。

答えて

1

これは使用できます。

SELECT 
    CustomerSalesRep.sales_rep_type_code AS "CustomerQueueMessage/CustomerMaster/CustomerSalesRep/SalesRepTypeCode", 
    CustomerAddressType.address_type_ID  AS "CustomerQueueMessage/CustomerMaster/CustomerAddressType/AddressTypeID",   
    CustomerMaster.customer_ID    AS "CustomerQueueMessage/CustomerMaster/CustomerID", 
    CustomerQueueMessage.customer_queue_ID AS "CustomerQueueMessage/CustomerQueueMsgID" 
FROM CustomerQueue AS CustomerQueueMessage 
INNER JOIN dbo.MDM_Customer    AS CustomerMaster  ON (CustomerQueueMessage.customer_queue_ID = CustomerMaster.customer_queue_ID) 
INNER JOIN dbo.MDM_CustomerAddressType  AS CustomerAddressType ON (CustomerAddressType.customer_queue_ID = CustomerMaster.customer_queue_ID) 
INNER JOIN dbo.MDM_CustomerSalesRep  AS CustomerSalesRep  ON (CustomerSalesRep.customer_queue_ID  = CustomerMaster.customer_queue_ID) 
FOR XML PATH('SAPcustom'), TYPE, ELEMENTS 

このようにXMLを生成します。

<SAPcustom> 
    <CustomerQueueMessage> 
    <CustomerMaster> 
     <CustomerSalesRep> 
     <SalesRepTypeCode>1</SalesRepTypeCode> 
     </CustomerSalesRep> 
     <CustomerAddressType> 
     <AddressTypeID>1</AddressTypeID> 
     </CustomerAddressType> 
     <CustomerID>1</CustomerID> 
    </CustomerMaster> 
    <CustomerQueueMsgID>1</CustomerQueueMsgID> 
    </CustomerQueueMessage> 
</SAPcustom> 
+0

こんにちはSerkan、助けてくれてありがとう。申し訳ありませんが私は明確ではないが、私が欲しいのは、CustomerMaster/CustomerSalesRepではなくCustomerMaster/CustomerAddressType/CustomerSalesRepです。しかし、提案しても(各列の完全なパスを定義する)、私は必要な構造を得ることができません。実際には、XMLDATAを許可しないので、単語PATHを使用できません(SQLアダプタが選択を読み取るために必要です)。 – user3417479

+0

@ user3417479 XMLDATA?私はまったく使用しません。廃止予定のXDRのためのものです。 XMLSCHEMAでさえ、アダプタを使用する必要はまったくありません。私は出力を最初に得ることに焦点を当て、次にスキーマについて心配します。 –