1

これまでのところ、次のものがあります。

   SELECT D.department AS dept, C.name AS subdept
    FROM (SELECT DISTINCT department FROM classes WHERE web != 0 ORDER BY department,name LIMIT 5) D
    LEFT JOIN classes C ON (C.department = D.department)
    ORDER BY D.department,C.name

結果は次のようになります。

+------+-------------------------------+
| dept | subdept                       |
+------+-------------------------------+
| BOOK | CHILDRENS BOOKS               |
| BOOK | DVD'S                         |
| CLOT | ACCESSORIES                   |
| CLOT | APRONS                        |
| FEED | BIBS & BURP CLOTHS            |
| FEED | BOTTLE & FOOD WARMERS         |
+------+-------------------------------+

私が取得しようとしているのは、次のようなnull subdept値を持つ各部門の「ヘッダー」です。

+------+-------------------------------+
| dept | subdept                       |
+------+-------------------------------+
| BOOK | null                          |
| BOOK | CHILDRENS BOOKS               |
| BOOK | DVD'S                         |
| CLOT | null                          |    
| CLOT | ACCESSORIES                   |
| CLOT | APRONS                        |
| FEED | null                          |    
| FEED | BIBS & BURP CLOTHS            |
| FEED | BOTTLE & FOOD WARMERS         |
+------+-------------------------------+

テーブルの構造: departments テーブルには、クラスの department フィールドへの id 主キーが外部キーとして含まれています。

部門: id | (部門の) 名前 クラス: 部門 | 部門 | 名前(クラスの)

DanfromGermanyが私に示したものに基づいて、私は次のことを知っています:

SELECT D.department AS dept, C.name AS subdept
FROM
 (SELECT DISTINCT department FROM classes WHERE web != 0 ORDER BY department,name  LIMIT 5) D
LEFT JOIN classes C ON (C.department = D.department)
GROUP BY D.department, C.name WITH ROLLUP

これで次のようになります。

+--------+-------------------------------+
| dept   | subdept                       |
+--------+-------------------------------+
| BOOK   | CHILDRENS BOOKS               |
| BOOK   | DVD'S                         |
| BOOK   | [NULL]                        |
| CLOT   | ACCESSORIES                   |
| CLOT   | APRONS                        |
| CLOT   | [NULL]                        |
| FEED   | BIBS & BURP CLOTHS            |
| FEED   | BOTTLE & FOOD WARMERS         |
| FEED   | [NULL]                        |
| GEAR   | BOOSTER CAR SEATS             |
| GEAR   | CAR SEAT ACCESSORIES          |
| GEAR   | [NULL]                        |
| GIFT   | BABY BASKETS & DIAPER CAKES   |
| GIFT   | BANKS                         |
| GIFT   | [NULL]                        |
| [NULL] | [NULL]                        |
+--------+-------------------------------+

OK 最後の編集:

order by を使用するサブクエリで動作します。

SELECT * FROM
(SELECT D.department AS dept, C.name AS subdept
FROM
 (SELECT DISTINCT department FROM classes WHERE web != 0 ORDER BY department,name  LIMIT 5) D
LEFT JOIN classes C ON (C.department = D.department)
GROUP BY D.department, C.name WITH ROLLUP
) T
ORDER BY dept,subdept
4

1 に答える 1