2013-07-21 2 views
3

나는 C#에서 하나의 Windows 응용 프로그램에서 작업하고 있습니다. 하나의 양식에 테이블 레이아웃 panel.And에서 카테고리 현명한 책 이미지를 표시하고 싶습니다. 각 카테고리에 대해 5 권의 책 이미지를 표시하십시오.동적으로 테이블 패널에 데이터를 표시하는 방법

내가 카테고리 현명한 책을 검색하는 데 사용할 쿼리는 나에게 각 카테고리에서 5 권의 책을 제공 즉

WITH CategoryCTE AS (
    SELECT 
     BookName, 
     ROW_NUMBER() OVER (
      PARTITION BY CategoryName 
      ORDER BY CategoryName DESC 
     ) AS CTE_Order 
    FROM BookMaster 
) 
SELECT bm.BookName,bm.BookImage, cm.CategoryName, scm.SubCategoryName 
FROM 
    CategoryCTE 
    INNER JOIN BookMaster bm ON CategoryCTE.BookName = bm.BookName 
    INNER JOIN CategoryMaster cm ON bm.CategoryName = cm.Oid 
    INNER JOIN SubCategoryMaster scm ON bm.SubCategoryName = scm.Oid 
WHERE CategoryCTE.CTE_Order < 6 
GROUP BY cm.CategoryName, scm.SubCategoryName, bm.BookName,bm.BookImage 

이 쿼리 나에게 적절한 출력을 제공합니다. 하지만 문제는 테이블 패널에 책 이미지를 표시하려는 것입니다. ierow 1에는 카테고리 1의 5 권의 책 이미지가 있고 2 행에는 카테고리 2의 책 이미지가 있습니다. 이제 데이터베이스에 4 권의 책 카테고리가 있습니다. 즉, 테이블 레이아웃 패널의 행은 데이터베이스의 카테고리 테이블에 따라 달라지며 테이블의 열은 고정되어 있습니다. 즉 첫 번째 열은 카테고리 이름이고 다른 열은 책 이미지입니다.

나는 내 질문에 대해 적절하게 설명했으면 좋겠다. 제발이 문제에 대한 해결책을 제안 해주세요. 사전에 감사합니다.

+0

당신은 당신이 SQL에서 생산하려는 설정 결과의 예를 추가 할 수 있습니다? (그리고 이상적으로 sqlfiddle 데이터와 구조 :)) – jazzytomato

+0

쿼리 위의 –

+0

같은 결과를 내게 주어진 주어진 쿼리 내게 적절한 출력을 내 문제는 어떻게 테이블 패널 레이아웃에 표시하는 것입니다 –

답변

1

당신이 결과가 같은 것을보고 싶지 경우 :

CategoryName Book1   Book2    Book3   Book4   Book5 
------------ ----------- --------------- -------------- ------------- ------------ 
Cat1   Image#6.jpg Image#61.jpg  Image#62.jpg Image#63.jpg Image#64.jpg 
Cat2   Image#5.jpg Image#51316.jpg Image#5136.jpg Image#516.jpg Image#56.jpg 

다음 쿼리를 수행해야합니다

WITH CategoryCTE AS (
    SELECT 
     BookName, 
     ROW_NUMBER() OVER (
      PARTITION BY CategoryName 
      ORDER BY CategoryName DESC, BookName 
     ) AS CTE_Order 
    FROM BookMaster  
) 

SELECT CategoryName, [1] AS Book1, [2] AS Book2, [3] AS Book3, [4] AS Book4, [5] AS Book5 
FROM 
(SELECT bm.BookImage, cm.CategoryName, c.CTE_Order FROM 
    CategoryCTE c 
    INNER JOIN BookMaster bm ON c.BookName = bm.BookName 
    INNER JOIN CategoryMaster cm ON bm.CategoryName = cm.Oid 
    INNER JOIN SubCategoryMaster scm ON bm.SubCategoryName = scm.Oid 
WHERE c.CTE_Order < 6 
GROUP BY cm.CategoryName, bm.BookImage, c.CTE_Order 
) Sub 
PIVOT (MAX(BookImage) FOR CTE_Order IN ([1],[2],[3], [4],[5])) AS PivotTable 
관련 문제