私は管理をしなければなりません。私は SQL の達人ではありません。おそらく、このクエリは本当に単純ですが、うまく書けません。基本的に、すべてのページは隣接リスト モデルを使用して配置されます (私はディープも追跡しています)。
+----+---------------+-------------------+-----------+
| id | title | level | position | parent_id |
+----+---------------+-------+-----------+-----------+
| 1 | Home | 0 | 0 | null |
+----+---------------+-------+-----------+-----------+
| 2 | Resources | 0 | 1 | null |
+----+---------------+-------+-----------+-----------+
| 3 | About | 0 | 2 | null |
+----+---------------+-------+-----------+-----------+
| 4 | Documents | 1 | 0 | 2 |
+----+---------------+-------+-----------+-----------+
| 5 | Tutorials | 1 | 1 | 2 |
+----+---------------+-------+-----------+-----------+
位置は同じ親の中で一意であることに注意してください。
私が達成しようとしているのは、親と位置で並べ替えることですが、親カテゴリはその子の直前にリストする必要があります。これは明らかであり、機能しません。
SELECT * FROM PAGE p
ORDER BY parent_id, position
結果は最初のテーブルです。必要なものは次のとおりです。
+----+---------------+-------------------+-----------+
| id | title | level | position | parent_id |
+----+---------------+-------+-----------+-----------+
| 1 | Home | 0 | 0 | null |
+----+---------------+-------+-----------+-----------+
| 2 | Resources | 0 | 1 | null | // Parent of 4, 5
+----+---------------+-------+-----------+-----------+
| 4 | Documents | 1 | 0 | 2 | // Child of Resource
+----+---------------+-------+-----------+-----------+
| 5 | Tutorials | 1 | 1 | 2 | // Child of Resource
+----+---------------+-------+-----------+-----------+
| 3 | About | 0 | 2 | null |
+----+---------------+-------+-----------+-----------+
再帰をサポートしていないMySQLでこれは可能ですか?