Можно ли создать предложение ORDER BY, чтобы обеспечить следующие критерии для двух полей (оба типа INT), которые в этом примере называются child
и parent
соответственно.
parent
ссылается child
, но может быть нулевым. - Родитель может иметь несколько детей;у ребенка только один родитель.
- Ребенок не может быть самим родителем.
- Должен существовать хотя бы один ребенок без родителя.
- Каждое значение
child
должно появиться до того, как оно появится в parent
в упорядоченном наборе результатов.
У меня проблемы с пунктом 5.
Пример неупорядоченных данных:
child parent
------------
1 NULL
3 5
4 2
2 5
5 NULL
Очевидно, что ни ORDER BY a, b
, ни ORDER BY b, a
не работают.На самом деле, чем больше я думаю об этом, тем не менее, я не уверен, что это вообще можно сделать.Учитывая ограничения, очевидные случаи, такие как:
child parent
------------
1 2
2 1
, не допускаются, потому что это нарушает правило 3 и 4 (и, очевидно, 5).
Итак, вот чего я пытаюсь достичьвозможно, и если да, то как?Платформа - SQL Server 2005.
Обновление: Требуемый порядок сортировки для данных примера:
child parent
------------
1 NULL
5 NULL
2 5
3 5
4 2
Для каждой строки, которая определяет ненулевое значение в родительском элементестолбец, значение уже присутствует в дочернем столбце.