; С msgs
КАК
(
-- получите первое сообщение
ВЫБЕРИТЕ 0 как MessageLevel,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [UserName] КАК SentToUserName,
A. [вопрос],
A. [тело],
новообращенный (varchar, A. [MsgDate], 107) КАК zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
A. [InitialMessageID]
ОТ
[tbl_Messages] a
ВНУТРЕННЕ СОЕДИНИТЕ
[tbl_Profile] b
НА
A. [ProfileID] = B. [ProfileID]
ГДЕ
A. [FromProfileID] = @FromProfileID
-- рекурсивная часть CTE
СОЕДИНЕНИЕ ВСЕ
ВЫБЕРИТЕ m.MessageLevel+1,
A. [MessageID],
A. [ProfileID],
A. [FromProfileID],
A. [FromUsername],
B. [UserName] КАК SentToUserName,
A. [вопрос],
A. [тело],
новообращенный (varchar, A. [MsgDate], 107) КАК zdate,
A. [MsgDate],
A. [MsgRead],
A. [MsgReplied],
A. [MsgNew],
A. [ReplyOfMessageID],
A. [InitialMessageID]
ОТ
[tbl_Messages] a
ВНУТРЕННЕ СОЕДИНИТЕ
[tbl_Profile] b
НА
A. [ProfileID] = B. [ProfileID]
ВНУТРЕННЕ СОЕДИНИТЕ
msgs m
НА
A. [ReplyOfMessageID] = M. [MessageID]
ИЛИ A. [InitialMessageID] = M. [MessageID] -- не смогите это
)
ВЫБЕРИТЕ *
ОТ msgs
ЗАКАЗ MessageLevel, [MsgDate] DESC
|