Я пытаюсь создать настройку форума, где вы можете прокомментировать определенные сообщения и получить ответы сразу после родителя в порядке даты. Под родителем будет только один под-уровень. Вот пример набора данных:SQL Parent/Child CTE Ordering
ID.ParentID.Datestamp
12.NULL.2013-03-01 1:00pm
13.NULL.2013-03-01 2:00pm
14.12.2013-03-01 2:20pm
15.12.2013-03-01 2:30pm
16.NULL.2013-03-01 3:30pm
А вот то, что я хочу, чтобы в итоге:
12.NULL.2013-03-01 1:00pm
14.12.2013-03-01 2:20pm
15.12.2013-03-01 2:30pm
13.NULL.2013-03-01 2:00pm
16.NULL.2013-03-01 3:30pm
Я знаю, что нужна какая-то КТР происходит, но это не заказывает детей под соответствующий родитель (очевидно, поскольку не существует предложения ORDER BY); Я не мог понять правильный порядок. Может ли кто-нибудь дать представление?
; WITH Messages
AS
(
SELECT ID, ParentID, Datestamp
FROM ForumMessages
WHERE ParentID IS NULL
-- Recursive
UNION ALL
SELECT
t2.ID, t2.ParentID, t2.Datestamp
FROM
ForumMessages AS t2
JOIN Messages AS m ON t2.ParentID = m.ID
)
SELECT ID, ParentID, Datestamp
FROM Messages
Ваше окончательное утверждение простой выбор из набора, сгенерированного CTE. Он не имеет предложения ORDER BY. – Tim
Правда. Я попробовал кое-что, но не мог понять правильность заказа. У вас есть ответ? – Matt
Кроме того, в реальном приложении, например, вы описываете (форум), вы не будете сортировать все в базе данных; скорее, вы подождете, пока пользователь не нажмет на какое-либо конкретное сообщение форума, и только тогда вы получите свои связанные субположения, которые вы могли бы отсортировать по дате времени. – Tim