微調整したい既存の MYSQL クエリがありますが、その方法がわかりません。topic
個々のトピックに投稿された最新のメッセージで並べられるように調整したいと思います。
これが私が現在持っているものです:
select
t.*,
coalesce(s.StarCount, 0) as StarCount,
coalesce(m.UserCount, 0) as UserCount,
coalesce(m.MessageCount, 0) as MessageCount
from
Topics t
left join (
select
topic,
count(distinct user) as UserCount,
count(*) as MessageCount
from Messages
group by topic
) m ON m.topic = t.topic
left join (
select
topic,
count(*) as StarCount
from Stars_Given
group by topic
) s ON s.topic = t.topic
ORDER BY UserCount DESC, topicID DESC
LIMIT 0,15
最良の答えはこのコードですが、調整されています。
そして、これが私のテーブルのサンプルです。
メッセージ
MessageID User Message Topic Time
1 Tom Hi ball 9:00am
2 John Hey book 10:00am
3 Mike Sup book 8:00am
4 Mike Ok book 11:00am
トピック
topicID Topic Title Category1 Category2
1 ball Sports Action Hot
2 book School Study Hot
Stars_Given
starID Topic
1 ball
2 book
3 book
4 book
私は最終的にしたい:
Topic_Review
Topic Title StarCount UserCount MessageCount
book school 3 2 3
ball Sports 1 1 1
注: のトピックが表book
で使用されている最新のトピックであるMessages
ため、このトピックが最初です。