次の(簡略化された)構造のテーブルがあります。
INT id,
INT type,
INT sort
必要なのは、次のようにデータを並べ替えるSELECTです。
sort
同じタイプのすべての行は順番に並べられ、内部で昇順で並べ替えられ、- 1つのタイプのすべての「ブロック」は、最小値でソートされます
sort
。
例:
テーブルが次のようになっている場合:
| id | type | sort |
| 1 | 1 | 3 |
| 2 | 3 | 5 |
| 3 | 3 | 1 |
| 4 | 2 | 4 |
| 5 | 1 | 2 |
| 6 | 2 | 6 |
クエリは次のように結果を並べ替える必要があります。
| id | type | sort |
| 3 | 3 | 1 |
| 2 | 3 | 5 |
| 5 | 1 | 2 |
| 1 | 1 | 3 |
| 4 | 2 | 4 |
| 6 | 2 | 6 |
これで十分に明確になることを願っています。
これは非常に一般的な要件であるため、私には見えますが、自分でユースケースに転送できるほど近い例は見つかりませんでした。少なくとも1つのサブクエリを回避することはできないと思いますが、自分でそれを理解することはできませんでした。
よろしくお願いします。
ちなみに、このクエリはCakePHP 2.1で使用するので、Cakeで快適に実行できる方法をご存知の場合は、お知らせください。