SQL から製品画像のリストを取得して、画像のスライドショーに表示したいと考えています。
ただし、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
繰り返しますが、これが最善の方法かどうかはわかりません。
私は2つのテーブルを持っています。1 つは Product で、もう 1 つは 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...