「ディスカッション」テーブルスキーマ
title description desid replyto upvote downvote views
browser used a1 none 1 1 12
- bad topic b2 a1 2 3 14
sql database a3 none 4 5 34
- crome b4 a3 3 4 12
上記の表には、メイントピックとコメントの2種類のコンテンツタイプがあります。メイントピックまたはコメントを識別するために使用される一意のコンテンツ識別子「desid」。「desid」はメイントピックの場合は「a」で始まり、コメントの場合は「desid」は「b」で始まります。コメントの場合、「replyto」は、このコメントが関連付けられているメイントピックの「desid」です。
(賛成+反対+訪問+コメント数)の追加に基づいて整理された上位の主要トピックのリストを見つけたいと思います。次のクエリは、トップトピックのリストを(賛成+反対+訪問)の順に示します。
select *
upvote+downvote+views
クエリによる数が最も多い
select *
from [DB_user1212].[dbo].[discussions]
where desid like 'a%'
order by (upvote+downvote+visited) desc
(comments + upvote + downvote + views)について私は試しました
select *
from [DB_user1212].[dbo].[discussions]
where desid like 'a%'
order by (select count(*)
from [DB_user1212].[dbo].[discussions]
where replyto = desid )+upvote+downvote+visited) desc
しかし、それは機能しませんでした。外部クエリから内部サブクエリにdesidを送信することはできないためです。これを解決する方法を教えてください。クエリ言語でのみ解決策が必要であることに注意してください。