Возможно ли создать предложение ORDER BY, чтобы обеспечить следующие критерии для двух полей (оба типа INT), которые называются child
и parent
соответственно для этого примера.Комплексный порядок TSQL по предложению
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
Для каждой строки, которая определяет ненулевое значение в родительской колонке, значение уже присутствует int дочерний столбец.
Не мог бы вы показать пример данные в требуемом порядке, пожалуйста? Это поможет. –
Добавлено согласно вашему запросу, Брайан. –