私はアプリケーションのためのフォーラムを構築しており、ディスカッションに関する最新のポスターを取得しようとしています。私が使用しているデータベースはOracleです。oracleの複雑な質問の最後のフォーラムのポスターを取得
私は、次の表があります。
discussions
id
course_id
user_id
title
stub
created_at
threads
id
discussion_id
user_id
created_at
updated_at
message
discussion_views
discussion_id
user_id
time
users
id
username
をそして、私は次のクエリがあります:私は必要なもの
select discussions.created_at,
discussions.title,
users.username,
count(threads.id) AS "replies",
count(distinct discussion_views.discussion_id) AS "views"
from discussions
left join threads on discussions.id=threads.discussion_id
left join discussion_views on discussions.id=discussion_views.discussion_id
join users on users.id=discussions.user_id
group by discussions.created_at, discussions.title, users.username
order by discussions.created_at desc
は、スレッドと日付で掲示最後のユーザーを取得することです。インナーインサート、ジョイント、または別のインサートを作成する必要があります。また、私のフォーラムでは多くのトラフィックを処理する必要があるため、クエリの実行が必要になります。
あなたはスレッドに投稿最後のユーザーの日付を求めているが、あなたのスレッドのテーブルには、その日付を持っていません。また、あなたの "views"カウントは常に1になります(そこにはビューがあります)。なぜなら、特定のディスカッションのためにディスカッションが1つだけあるからです。つまり、 'discussion_views'には独自の' id'カラムがありますか? –