mysql テーブルをいくつかの異なる列でソートしようとしています。ここにテーブルがあります:
+------------+------------+------------+------------+
| id | parent_id | ordering | level |
+------------+------------+------------+------------+
| 1 | 0 | 0 | 0 |
+------------+------------+------------+------------+
| 2 | 0 | 2 | 0 |
+------------+------------+------------+------------+
| 3 | 0 | 3 | 0 |
+------------+------------+------------+------------+
| 4 | 0 | 4 | 0 |
+------------+------------+------------+------------+
| 5 | 2 | 0 | 1 |
+------------+------------+------------+------------+
| 6 | 0 | 1 | 0 |
+------------+------------+------------+------------+
そして、これは私が達成したい結果です:
+------------+------------+------------+------------+
| id | parent_id | ordering | level |
+------------+------------+------------+------------+
| 1 | 0 | 0 | 0 |
+------------+------------+------------+------------+
| 6 | 0 | 1 | 0 |
+------------+------------+------------+------------+
| 2 | 0 | 2 | 0 |
+------------+------------+------------+------------+
| 5 | 2 | 0 | 1 |
+------------+------------+------------+------------+
| 3 | 0 | 3 | 0 |
+------------+------------+------------+------------+
| 4 | 0 | 4 | 0 |
+------------+------------+------------+------------+
ご覧のとおり (うまくいけば)、アイテムを順序付けとparent_idで並べ替えたいと思います。可能であれば、単一のクエリを使用することをお勧めします。これが不可能な場合は、クエリと組み合わせて PHP ループを使用できます。可能であれば、複数のクエリを避けたいと思います。
parent_id
の行などの行id=5
が「親行」(行の行)の下になるように並べ替える方法が必要id=2
です。「順序」は「レベル」に基づいています。
私が最も近いのは、これを次のように並べ替えることです。
SELECT * FROM table ORDER BY ordering,id,parent_id
どちらが返されますか:
+------------+------------+------------+------------+
| id | parent_id | ordering | level |
+------------+------------+------------+------------+
| 1 | 0 | 0 | 0 |
+------------+------------+------------+------------+
| 5 | 2 | 0 | 1 |
+------------+------------+------------+------------+
| 6 | 0 | 1 | 0 |
+------------+------------+------------+------------+
| 2 | 0 | 2 | 0 |
+------------+------------+------------+------------+
| 3 | 0 | 3 | 0 |
+------------+------------+------------+------------+
| 4 | 0 | 4 | 0 |
+------------+------------+------------+------------+