私は電子商取引のウェブサイトのために何かを達成しようとしていますが、その考え方はサブカテゴリで結果の順序を持たせることですが、選択した特定のカテゴリ、セカンダリカテゴリが最後に表示されます。いくつかの特別な要件を伴う複数行の並べ替え
私は同じセクションに同じサブカテゴリを持つすべてのアイテムをマージできるようにしたいと考えています。これは、それがsecondaryCategoriesと一致する項目の場合であるが、それらが一緒にすべき特定のカテゴリに一致する項目もある。
これは、Select ..Union All .. Selectを生成することができます。これは、PHPで相違しますが、生成される共用体と選択文の数によっては、クエリが遅くなります。
誰かがこれを行う方法に関するより良いアイデアを持っているかどうかを知りたいのですが、このSQLを使って私が望む結果を得ることができましたが、それでもサブカテゴリの項目はまとめられません。最初に注文すると、私が探している特定のカテゴリのアイテムはリストの一番上に表示されず、それらはsecondaryCategoriesと混同します。
SELECT myFields FROM items where (category = :category or
FIND_IN_SET(:category,secondaryCATEGORIES)>0)and moreFilters
ORDER BY CASE WHEN Category= :category THEN 1 ELSE 2 END ASC,subcategory ASC
サンプルデータ:ソートされた後
Name Category Subcategory secondaryCategories Adapter1 Adapters Audio Adapter Audio Adapter2 Adapters Video Adapter Video Adapter3 Network Network Adapters Adapters Adapter4 Audio Audio Adapter Adapters
:私はそれになりたい何
Name Category Subcategory secondaryCategories Adapter1 Adapters Audio Adapter Audio Adapter2 Adapters Video Adapter Video Adapter4 Audio Audio Adapter Adapters Adapter3 Network Network Adapters Adapters
:
Name Category Subcategory secondaryCategories Adapter1 Adapters Audio Adapter Audio Adapter4 Audio Audio Adapter Adapters Adapter2 Adapters Video Adapter Video Adapter3 Network Network Adapters Adapters
テーブル構造、サンプルデータと説明出力をお願いします。 – e4c5