私は、次の表があります。私は実行したクエリの望ましい結果がthread_id
とusername
で最も最近のスレッドから長い最新のメッセージのtitle
を一覧表示し、結果をソートすることであるSQL文でサブクエリが多すぎますか?
users:
user_id
user_name
message:
message_id
thread_id
to_id
from_id
title
message_text
message_date
status
をdate
で降順に並べ替えます。私は一度に10〜20件程度の結果をリストアップするつもりです。
私が思いついたのはこれまでのことですが、それを複雑にしていて、クエリを書くのに最適な方法があるようです。誰もが同じthread_id
を持つすべてのメッセージのcount
を取得する方法を知っていれば
SELECT personal_messages.message_id,
personal_messages.thread_id,
personal_messages.body,
users.username
FROM users, personal_messages
WHERE message_id IN
(SELECT MAX(message_id) from personal_messages GROUP BY thread_id)
AND users.id IN
(SELECT users.id FROM users WHERE users.id = personal_messages.from_id)
ORDER BY personal_messages.message_date DESC
また
、それは素晴らしいだろう!
ヒントをお聞かせください。誰もが同じなthread_idを持つすべてのメッセージの数を取得する方法を知っている場合にも、素晴らしいだろう:
あなたが「デザインパターン」タグを削除したい場合があります。そうでない場合は、あなたの質問に関連すると思われるデザインパターンを明確にします。 – mikemanne