2012-05-22 73 views
0

我想從SQL獲取產品圖像列表以顯示圖像幻燈片。SQL SP返回產品圖像列表

但是,我不確定從MS SQL存儲過程返回數據的最佳方式。

問題是,在SP下面,我得到了每個圖像的重複記錄。理想情況下,我想獲得一個數組或字符串列表或某種方式來從單個記錄中分出數據。但是,我接受其他解決方案。我的目標是以直觀的方式獲取頁面上的圖像。這是一個ASP.Net C#應用程序。

這是我的存儲過程簡化的select語句:

SELECT 

    P.[ProductId] 
    ,P.[ProductName] 
    ,I.[FileName] as ProductImage 

    FROM [Product] P 
    LEFT JOIN [ProductImages] I 
    on P.ProductId = I.ProductId 

    Where P.ProductId = @ProductId 

這將返回看起來像這樣的數據:

ProductId   ProductName  ProductImage 
1     Coffee Mug  Mug_Image1.jpg 
1     Coffee Mug  Mug_2.jpg 
1     Coffee Mug  Mug_Img3.jpg 

我想它看起來就像這樣(但我也很想聽聽其他的想法):

ProductId   ProductName  ProductImage 
1     Coffee Mug  Mug_Image1.jpg, Mug_2.jpg, Mug_Img3.jpg 

同樣,我不知道這是否是最好的方式。

我有兩個表。一個是Product,另一個是ProductImages,它從Product表中對ProductId具有FK。

最終,我需要構建JSON來提供客戶端幻燈片腳本。就像這樣:

productimages = [ 
     { "image": "Mug_Image1.jpg", "caption": "", "link": "", "title": "" }, 
     { "image": "Mug_2.jpg", "caption": "", "link": "", "title": "" }, 
     { "image": "Mug_Img3.jpg", "caption": "", "link": "", "title": "" } 
            ]; 

這裏是C#

//Create product object to display on page 
ProductEntity product = new ProductEntity(); 
product.Id = idval; 
//Load the product from SP based on ID 
ProductWF.LoadProduct(product); 

//Render product details on page 
ProductNameLabel.Text = product.ProductName; 

//Construct JSON image list 
StringBuilder sb = new StringBuilder(); 
etc... 
+0

如果您最終每個圖像需要一行JSON,那麼每個圖像從數據庫中出現一行結果會出現什麼問題?這似乎是一個簡單的一對一映射... – mellamokb

+0

嗯,我也使用同一個SP來顯示產品信息和細節。我已經使用C#編輯了我的上述問題以提供一些上下文。 – User970008

回答

1

你可以使用這樣的:如果

SELECT 
    P.[ProductId], 
    P.[ProductName], 
    FileNames = STUFF(
       (SELECT ', ' + FileName FROM ProductImages 
       WHERE ProductId = P.ProductId FOR XML PATH('')) , 1 , 1 , '') 
     FROM 
     [Product] P 

獲取文件名的以逗號分隔的列表的每個產品,幫助。但是您想要生成的JSON字符串可能會比您已經擁有的查詢結果更簡單。

如果你從上面走查詢,您可以將其映射到一個類:

public class Product 
{ 
    public int ProductId {get; set;} 
    public string ProductName {get; set;} 
    public string FileNames {get; set;} 
} 

在你不得不分割文件名字符串屬性,構建一個JSON字符串在服務器端。

+0

@ User970008:你在哪裏獲得標題,鏈接和標題的值? – Mithrandir

+0

謝謝,我可以做這個工作。 – User970008