私は私の投稿と私のコメントの両方を含むテーブルを持っています。私たちは一つのコメントだけを深く、コメントはコメントにしません。今、私たちはポストのためにajaxリクエストをしてから、別のクエリでコメントをつかんで、親の投稿IDを使って適切な子コメントをつかんでいます。SQL Server 2008スレッド化コメントシステム - 効率がさらに優れていますか?
私がしたいことは、これを最も効率的な単一のクエリシステムに統合することです。
これは私が間違っていない場合は、CROSSはAPPLYを使用して、またはUNIONのいずれかに私を残しますが、いくつか注意点があります。
-
我々は、トップ10の記事を選択したい
- とトップ2は、各
- 投稿へのコメントは
- コメントはここ
昇順でリストする必要が私たちのCURの例です降順でリストされる必要があります投稿やコメントの家賃クエリ:
投稿:
SELECT TOP 10 ForumPostID, ForumID, ContentText, Hidden, S.Firstname, S.Lastname,
CONVERT(VARCHAR(30),DATEADD(hh,CASE
WHEN DD.StartDate IS NOT NULL THEN 5 ELSE 6
END,
FP.PostDate),126)+'Z' AS PostDate,
PostDate AS UglyTime, TopPostID,
(SELECT COUNT(*) FROM Admin.dbo.ForumPosts WHERE TopPostID = FP.ForumPostID) AS
'CommentCount',
(SELECT COUNT(*) FROM Admin.dbo.ForumLikes WHERE ForumPostID = FP.ForumPostID) AS 'Likes',
CASE (SELECT COUNT(*) FROM Admin.dbo.ForumLikes WHERE ForumPostID = FP.ForumPostID AND
Authuser = FP.Authuser) WHEN 0 THEN 'Like' ELSE 'You liked this.' END AS 'LikeText'
FROM Admin.dbo.ForumPosts FP
INNER JOIN Student.dbo.Student S
ON S.StudentUID = FP.Authuser
INNER JOIN Admin.dbo.DayLightSavingsDates DD
ON FP.PostDate BETWEEN DD.StartDate AND DD.EndDate
WHERE FP.ForumPostID NOT IN (SELECT Top 0 ForumPostID FROM Admin.dbo.ForumPosts FP2 ORDER BY
FP2.ForumPostID DESC)
AND FP.Hidden = 'N' AND FP.ContentText <> ''
AND FP.PostType = 'post'
ORDER BY FP.PostDate DESC
コメント:ここに与えることができ
SELECT TOP 50 ForumPostID, ForumID, ContentText, Hidden, S.Firstname, S.Lastname,
CONVERT(VARCHAR(30),DATEADD(hh,CASE
WHEN DD.StartDate IS NOT NULL THEN 5 ELSE 6 END,
FP.PostDate),126)+'Z' AS PostDate,
PostDate AS UglyTime, TopPostID,
(SELECT COUNT(*) FROM Admin.dbo.ForumPosts WHERE TopPostID = FP.ForumPostID) AS
'CommentCount',
(SELECT COUNT(*) FROM Admin.dbo.ForumLikes WHERE ForumPostID = FP.ForumPostID) AS 'Likes',
CASE (SELECT COUNT(*) FROM Admin.dbo.ForumLikes WHERE ForumPostID = FP.ForumPostID AND
Authuser = FP.Authuser) WHEN 0 THEN 'Like' ELSE 'You liked this.' END AS 'LikeText'
FROM Admin.dbo.ForumPosts FP
INNER JOIN Student .dbo.Student S
ON S.StudentUID = FP.Authuser
INNER JOIN Admin.dbo.DayLightSavingsDates DD ON FP.PostDate BETWEEN DD.StartDate AND DD.EndDate
WHERE FP.ForumPostID NOT IN
(SELECT Top 0 ForumPostID FROM Admin.dbo.ForumPosts FP2 ORDER BY FP2.ForumPostID DESC)
AND FP.ForumPostID IN
(SELECT Top 2 ForumPostID FROM Admin.dbo.ForumPosts FP3 WHERE FP3.TopPostID = FP.TopPostID
ORDER BY FP3.PostDate DESC)
AND FP.Hidden = 'N'
AND FP.ContentText <> ''
AND FP.PostType = 'comment'
AND FP.TopPostID IN (373, 371, 370, 369, 368, 367, 366, 365, 364, 363)
ORDER BY FP.ForumPostID ASC
-1:コードを読み取り可能な形式でフォーマットしてください。 – Akhil
申し訳ありませんが、準備が整う前に提出しましたが、ボタンをクリックしませんでした。今は少し良くなるはずです。 – ilikenwf
*ボタンがクリックされました!私は誓います!* –