2 つのテーブルがあるとします。
メンバー
------------------------
| user_id | first_name |
------------------------
メッセージ
--------------------------------------------------
| sender_id | recipient_id | message_type | body |
--------------------------------------------------
次を返すクエリを作成したいと思います。
---------------------------------------------
| user_id | first_name | number_of_messages |
---------------------------------------------
特定のnumber_of_messages
タイプのメッセージのみをカウントする必要がありmessage_type = 0
ますが、そのタイプのメッセージを送信しなかったメンバーを結果セットに含めたいと考えています。
これは私が現在持っているものです:
SELECT [user_id], [first_name], COUNT(sender_id) as number_of_messages
FROM [Member]
FULL OUTER JOIN [Message] ON user_id = sender_id
where message_type = 0
GROUP BY [Member].[user_id], [first_name]
ORDER BY number_of_messages DESC
このクエリの問題は、タイプ 0 のメッセージを送信していないメンバーが結果セットに含まれないことです。したがって、message_type = 0
句を使用して を減らしたいのnumber_of_messages
ですが、返される結果の数に影響を与えたくありません。
表示されているクエリに対して実行できる他の最適化がある場合は、お気軽にコメントしてください。