私はFacebookのアプリケーションを開発しています。最新のメッセージを得るために良いクエリを開発しようとしています。メッセージは、新しいスレッド(親IDの空のGUID)または応答にすることができます。最新またはlatsestの返信を持っているのどちらかである最初の10、または10〜20、または20〜30のスレッドを取得するためのクエリは何A私は必要ですが、私は願ってあなたのアイデアSQLのヘルプ、階層テーブルのデータ
を得るこれは、テーブル
ですCREATE TABLE [dbo].[Messages](
[Id] [uniqueidentifier] NOT NULL,
[ParentId] [uniqueidentifier] NOT NULL,
[message] [nvarchar](max) NOT NULL,
[MessageDateTime] [datetime] NOT NULL
)
私はトップ10と20の結果を得ることができるので、作品の種類のクエリを持っています。
SELECT ym.* FROM
(
SELECT top 20 TopId, MAX(MessageDateTime) as Mess FROM
(
SELECT
CASE ParentId WHEN '00000000-0000-0000-0000-000000000000' THEN Id ELSE ParentId END AS TopId, MessageDateTime
FROM Messages
) As Temp
GROUP BY TopId order by Mess desc)
AS table2
INNER JOIN Messages ym
ON ym.id = TopId
主な問題は、返信がない可能性があることです。したがって、statemntです。 ご協力いただきましてありがとうございます。
親が存在しないときにParentIdがNULLになることが許可されていると、それは役に立ちます。次に、ケースの代わりに合体を使用することができます。まだ答えとしてデータを噛んでいます。 –
これは、子メッセージのない親メッセージおよび/またはメッセージのみを返すようです。これは別のクエリで処理されるのでしょうか?これも子を返すべきですか? –