2017-01-24 1 views
2

SQL ServerからXMLを作成しようとしていますが、ネストされた要素が残っています。私は異なるFOR XMLパラメータを試しますが、それでも正しい結果を得ることはできません。SQL ServerでXMLを入れ子にした

クエリは次のようになります。

SELECT 
Product.ID, Product.ProductName, 
    (SELECT 
    Images.ProductImage AS image 
    FROM Images 
    WHERE Images.ProductID = Product.ID 
    FOR XML PATH ('image_list'), ELEMENTS, TYPE 
    ) 
FROM (SELECT DISTINCT ID, ProductName FROM Product) Product 
FOR XML PATH ('products'), ELEMENTS, root ('Root') 

と私はこのように、このXMLを取得したい:

<Root> 
    <products> 
    <ID>1</ID> 
    <ProductName>product 1</ProductName> 
    <image_list> 
     <image>picture1.jpg</image> 
     <image>picture2.jpg</image> 
     <image>picture3.jpg</image> 
    </image_list> 
    </products> 
    <products> 
    <ID>2</ID> 
    <ProductName>product 2</ProductName> 
    <image_list> 
     <image>picture1.jpg</image> 
     <image>picture2.jpg</image> 
    </image_list> 
    </products> 
</Root> 

最初の部分IMAGE_LISTが問題で、OKです。何かアドバイス?その脳が仕事を開始した後、私は..probably :)解決

答えて

2

は、qustionを投稿することは良いです:)

私は、サブクエリの下に「IMAGE_LIST」として追加し、要素やパス名を削除します。 それだけです。

SELECT 
Product.ID, Product.ProductName, 
    (SELECT 
    Images.ProductImage AS image 
    FROM Images 
    WHERE Images.ProductID = Product.ID 
    FOR XML PATH (''), TYPE 
    ) 'image_list' 
FROM (SELECT DISTINCT ID, ProductName FROM Product) Product 
FOR XML PATH ('products'), ELEMENTS, root ('Root') 

結果は次のとおりです。みんなの楽しみのため

<Root> 
    <products> 
    <ID>1</ID> 
    <ProductName>product 1 </ProductName> 
    <image_list> 
     <image>picture1.jpg</image> 
     <image>picture2.jpg</image> 
     <image>picture3.jpg</image> 
    </image_list> 
    </products> 
    <products> 
    <ID>2</ID> 
    <ProductName>product 2 </ProductName> 
    <image_list> 
     <image>picture1.jpg</image> 
     <image>picture2.jpg</image> 
    </image_list> 
    </products> 
</Root> 
+1

は、いくつかの例の出力を追加します – Hogan

関連する問題