小さなチャット サービスで、2 人のユーザーが共通のチャットを行います。この SQL は、チャットしたユーザーのリストを選択します。
SELECT DISTINCT user.user_id, user.username
FROM user
INNER JOIN message
ON user.user_id = message.owner_user_id OR user.user_id = message.to_user_id
WHERE message.owner_user_id = :activeUserId
OR message.to_user_id = :activeUserId
ORDER BY message.date_time DESC
また、2 人のユーザー間で送信されたメッセージの数も取得する必要があります。出力は、アクティブなユーザーがチャットしたユーザーごとに 1 つの「フォルダー」のリストです。各フォルダには、ユーザーのユーザー名とチャット内のメッセージ数 (アクティブなユーザーから特定のユーザーへのメッセージ数と、特定のユーザーからアクティブなユーザーへのメッセージ数の合計) が含まれています。
row1: (active user and JohnSmith have 33 messsages in their common chat.)
user_id = 1;
username = 'JohnSmith';
message_count = 33;
row2: (active user and Johnny have 43 messsages in their common chat.)
user_id = 2;
username = 'Johnny';
message_count = 43;
これを 1 つの SQL ステートメントで行うにはどうすればよいでしょうか?