ためのSelectステートメント、グループ化私は(この例では簡体字)、次の表 'StockItems' を持っている:ここではMySQLの - の条件に一致するレコード
+----+----------+---------+---------+---------+-----+
| ID | SubCatID | Item | GroupID | Size | Def |
+----+----------+---------+---------+---------+-----+
| 1 | 1 | 40mm | 2 | 1 | 1 |
| 2 | 1 | 40mm | 2 | 1 | 0 |
| 3 | 1 | 75mm | 3 | 1 | 1 |
| 4 | 2 | 90mm | 4 | NULL | 1 |
+----+----------+---------+---------+---------+-----+
は、私が持っているクエリです:
SELECT ID, SubCatID, Item, GroupID
FROM StockItems
WHERE ((GroupID = 0 OR GroupID IS NULL) OR ((GroupID IS NOT NULL OR GroupID <> 0) AND Def = 1) OR Size IS NOT NULL) AND Del=0
ORDER BY SubCatID, Size, Item+0, Item
ここで、DefはGroupIDのデフォルト項目であり、Delは削除済みを表します。
これは機能しますが、私は望む結果を得るためにさらに1つのステップが必要です。同じGroupIDおよびSize WHERE SubCatID = 1
グループID及びサイズは任意のグループIDに同じであれば、私はほぼ次のクエリを使用してそこに着いた、それはデフ= 1
レコードを取得したい:
SELECT ID, SubCatID, Item, GroupID
FROM StockItems
WHERE ((GroupID = 0 OR GroupID is Null) OR ((GroupID IS NOT NULL OR GroupID <> 0) AND Def = 1) OR Size IS NOT NULL) AND Del=0
GROUP BY GroupID, Size
ORDER BY SubCatID, Size, Item+0, Item
しかし、私SubCatID = 1であるレコードにGROUP BYを適用したいだけです
GROUP BYがここに行く方法であるかどうかはわかりませんが、私が必要としているところで最も近いところです
0最初のクエリの出力:後者クエリの
+-----+----------+---------------+----------+
| ID | SubCatID | Item | GroupID |
+-----+----------+---------------+----------+
| 1 | 1 | 40mm Pipe | 2 |
| 331 | 1 | 40mm Pipe | 2 |
| 329 | 1 | 63mm Pipe | 3 |
| 330 | 1 | 75mm Pipe | 4 |
| 2 | 1 | 40mm Pipe | 2 |
| 332 | 1 | 40mm Pipe | 2 |
| 3 | 1 | 63mm Pipe | 3 |
| 4 | 1 | 75mm Pipe | 4 |
| 6 | 1 | 110mm Pipe | 6 |
| 7 | 1 | 125mm Pipe | 7 |
| 8 | 1 | 160mm Pipe | 8 |
| 9 | 1 | 200mm Pipe | 9 |
| 10 | 1 | 250mm Pipe | 10 |
| 11 | 1 | 315mm Pipe | 11 |
| 12 | 1 | 355mm Pipe | 12 |
| 13 | 1 | 400mm Pipe | 13 |
| 14 | 1 | 450mm Pipe | 14 |
| 5 | 1 | 90mm Pipe | 5 |
| 15 | 18 | 63mm 90 Be | NULL |
| 16 | 18 | 75mm 90 Be | NULL |
| 17 | 18 | 90mm 90 Be | NULL |
| 18 | 18 | 110mm 90 Be | NULL |
| 19 | 18 | 125mm 90 Be | NULL |
| 20 | 18 | 160mm 90 Be | NULL |
+-----+----------+---------------+----------+
出力:
+-----+----------+---------------+----------+
| ID | SubCatID | Item | GroupID |
+-----+----------+---------------+----------+
| 1 | 1 | 40mm Pipe | 2 |
| 329 | 1 | 63mm Pipe | 3 |
| 330 | 1 | 75mm Pipe | 4 |
| 2 | 1 | 40mm Pipe | 2 |
| 3 | 1 | 63mm Pipe | 3 |
| 4 | 1 | 75mm Pipe | 4 |
| 6 | 1 | 110mm Pipe | 6 |
| 7 | 1 | 125mm Pipe | 7 |
| 8 | 1 | 160mm Pipe | 8 |
| 9 | 1 | 200mm Pipe | 9 |
| 10 | 1 | 250mm Pipe | 10 |
| 11 | 1 | 315mm Pipe | 11 |
| 12 | 1 | 355mm Pipe | 12 |
| 13 | 1 | 400mm Pipe | 13 |
| 14 | 1 | 450mm Pipe | 14 |
| 5 | 1 | 90mm Pipe | 5 |
| 15 | 18 | 63mm 9B | NULL |
| 327 | 61 | Stainless St | 20 |
+-----+----------+---------------+----------+
これは私が欲しいものですが、多くのグループID = NULLレコードとサイズ= NULLがあります..したがってこれらの結果は表示されません。ですから、私はGROUP BYをSubCatID = 1のところで発生させたいだけです。
あなたは私たちに大きな恩恵を行うと、あなたが望む正確な出力を示してもらえますか? –
集計関数なしでGROUP BY句を使用する理由を理解していない。 @ティムは正しいです、出力が助けるでしょう。 – Sergio
私の質問の出力を表示する投稿を編集しました –