ここでの概念実証の質問:
基本的に、次の 2 つのクエリを 1 つに結合したいと考えています。
SELECT `cat` FROM `test` group by `cat` order by `catSort`,`ID` desc
$cat--> SELECT * FROM `test` where `cat`=$cat group by `cat2` order by `cat2Sort`,`ID` desc
詳しく説明しましょう。次のテーブルがあるとしますtest
。
-----------------------------------------
| ID | cat | cat2 | catSort | cat2Sort |
|----------------------------------------
| 1 | cat | sub | 0 | 0 |
| 2 | cat | sub2 | 0 | 1 |
| 3 | cat | sub | 0 | 1 |
| 4 | cat2 | sub | 1 | 0 |
| 5 | cat2 | sub2 | 1 | 0 |
| 6 | cat | sub2 | 0 | 0 |
----------------------------------------
これが行うことは、cat2
が のサブカテゴリでcat
あり、cat
がソートされcatSort
、cat2
がソートされるという 2 つのカテゴリがあることですcat2Sort
。この階層は次のようになります。
cat
sub ID:1
sub ID:3
sub2 ID:6
sub2 ID:2
cat2
sub ID:4
sub2 ID:5
order by catSort, cat2Sort
後で並べ替えが追加されるため、NOT でこれを達成するにはどうすればよいですか。新しく追加されたエントリが一番下に来るように並べ替える必要がありID
ますが、同時に並べ替えフィールドが設定されている場合は並べ替える必要があります。例えばorder by catSort, cat2Sort, ID
。
また、これを取得するには、それらを別のクエリでグループ化する必要があります。
cat
sub ID:1
sub2 ID:6
cat2
sub ID:4
sub2 ID:5
私が最初に考えたのは、2 つのフィールドをグループ化し、それらをグループ化することでした。何かのようなもの:
SELECT *, combine(`cat`,`cat2`) as `tempCat` FROM `test`
group by `tempCat` order by `catSort`,`serSort`,`ID` desc
しかし、もちろんそれは完全に作り話です。
そこに何かアイデアはありますか?