在一个小型聊天服务中,两个用户有一个共同的聊天。此 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
我还需要获取两个用户之间发送的消息数。输出是一个“文件夹”列表,每个用户都有一个,活动用户与之聊天。每个文件夹包含用户的用户名和聊天中的消息数量(活动用户给特定用户的消息数量与特定用户给活动用户的消息数量之和)。
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;
这怎么能在一个 SQL 语句中完成呢?