2016-05-02 5 views
0

私は電子商取引のウェブサイトのために何かを達成しようとしていますが、その考え方はサブカテゴリで結果の順序を持​​たせることですが、選択した特定のカテゴリ、セカンダリカテゴリが最後に表示されます。いくつかの特別な要件を伴う複数行の並べ替え

私は同じセクションに同じサブカテゴリを持つすべてのアイテムをマージできるようにしたいと考えています。これは、それが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 

+0

テーブル構造、サンプルデータと説明出力をお願いします。 – e4c5

答えて

0

は、念のために、誰かが同じことを思っていました、私は私のprogrにいくつかのコードを追加してこの問題を解決しました午前

私が行ったのは、サブカテゴリを選択して順序付けを行った後、サブカテゴリを生成するためにサブカテゴリを生成するためにサブカテゴリを取得したときです。「when subcategory = {subcategory_from_query [1]} then 1 when subcategory = {subcategory_from_query [2]} then 2など "

サンプルのPHPコードを追加すると私に知らせることができ、私はそれを投稿します。

関連する問題