0

ORDER BY フィールドに基づいて、MySQL クエリで行グループ ヘッダーを出力したいと考えています。これを説明する方法がわからないので、私が達成しようとしていることの例を示すのが最善です.

SELECT * FROM products_table
ORDER BY Category, Description


Prod_num Category Description Price
type_1
00001    type_1   Prod 1      $1
00002    type_1   Prod 2      $2
00003    type_1   Prod 3      $3
00004    type_1   Prod 4      $4
00005    type_1   Prod 5      $5
type_2
00006    type_2   Prod 6      $6
00007    type_2   Prod 7      $7
00008    type_2   Prod 8      $8
00009    type_2   Prod 9      $9
type_3
00010    type_3   Prod 10     $10
00011    type_3   Prod 11     $11

そのカテゴリのすべての製品を表示する前に、カテゴリ フィールドを行ヘッダーとして表示したいと考えています。これがどこかに投稿されているのを見たことがあると思いますが、多くの検索を行った後、主に適切な用語を使用していないと思うため、その方法を理解できませんでした.

4

1 に答える 1

2

私はこれがあなたのコードのプレゼンテーション側で行われるべきであると固く信じています、しかし、これは私が過去にそしてを使ってそれが行われたのを見た方法GROUP BYですWITH ROLLUP

SELECT  Category, 
        IFNULL(prod_num,'') Prod_Num, 
        IFNULL(description,'') Description, 
        IFNULL(price,'') Price
FROM    
  (
    SELECT *
    FROM   Products_Table
    GROUP BY Category,Prod_num,Description,Price
    WITH ROLLUP
  ) AS X
WHERE Category IS NOT NULL
  AND (
    (Prod_num IS NOT NULL AND Description IS NOT NULL AND Price IS NOT NULL)
     OR 
    (Prod_num IS NULL AND Description IS NULL AND Price IS NULL)
  )
ORDER BY Category,Prod_num,Description,Price

カテゴリ列が最初に配置されるため、これは100%要求したものではありません。変更できるかどうかを確認するために、十分に試していません。

結果は次のとおりです。

CATEGORY  PROD_NUM  DESCRIPTION  PRICE
type_1          
type_1    00001     Prod 1       $1
type_1    00002     Prod 2       $2
type_2          
type_2    00003     Prod 3       $3
type_2    00004     Prod 4       $4
type_2    00005     Prod 5       $5
type_3          
type_3    00006     Prod 6       $6

そしてサンプルのフィドル

http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

于 2013-02-13T23:34:04.563 に答える