Ниже приведены некоторые записи из таблицы:
id r_id a_id p_id
1 9 9 0
2 9 105 108
3 9 102 9
4 9 106 105
5 9 108 102
6 10 10 0
7 10 15 18
8 10 12 10
9 10 16 15
10 10 18 12
Я ищу SQL-запрос, который выдаст результат:
1 9 9 0
3 9 102 9
5 9 108 102
2 9 105 108
4 9 106 105
6 10 10 0
8 10 12 10
10 10 18 12
7 10 15 18
9 10 16 15
Ну, я задал похожий вопрос здесь , но вопрос не был завершен, и я также получил несколько отличных ответов. Редактирование этого вопроса может сделать ответы неприемлемыми, поэтому я не стал редактировать и добавил это как новый вопрос здесь.
- Корневой элемент имеет p_id = 0
- Для одного r_id может быть только один p_id = 0
- Показанная таблица, для которой нужно выполнить Query, не может быть отсортирована по корню.
- Я ищу вещи для работы в PostgreSql
EDIT:
Идея состоит в том, чтобы отсортировать строки таким образом, чтобы строка с {r_id, p_id} = x была ниже строки с {r_id, a_id} = x.