0
私は2つのテーブルchats
とchats_reply
を持っています。構造は以下の通りです。最後のメッセージを取得返信会話
チャット
--------------------------------------------------
| chat_id | user_one | user_two | created_at
--------------------------------------------------
| 1 | 1 | 2 | something here
--------------------------------------------------
chats_reply
-------------------------------------------------------------------------
| chatReply_id | chat_id | user_id | reply | created_at
-------------------------------------------------------------------------
| 1 | 1 | 1 | Message 1 | something here
-------------------------------------------------------------------------
| 2 | 1 | 2 | Message 2 | something here
-------------------------------------------------------------------------
私は私のクエリに問題のビットを持っています。私のuser_idが1であるとしましょう。送信された最後のメッセージを含むすべてのチャットのリストを返したいと思います。私はすでにすべてのチャットを一覧表示するクエリを持っていますが、最後のメッセージを返しません。問題は、私はそれがMessage 2
を返すようにしたいとき、それはchats_reply
テーブルからMessage 1
を返すあり、
SELECT
chats.chat_id,
chats.created_at AS ChatTime,
chats_reply.reply,
chats_reply.created_at AS ReplyTime,
chats_reply.status,
users.name,
users.last_name,
users.email
FROM chats
INNER JOIN chats_reply
ON chats.chat_id = chats_reply.chat_id
INNER JOIN users
ON users.user_id =
CASE
WHEN chats.user_one = '1'
THEN chats.user_two
WHEN chats.user_two = '1'
THEN chats.user_one
END
WHERE chats.user_one = '1' OR chats.user_two = '1'
GROUP BY chats_reply.chat_id
ORDER BY chats_reply.chatReply_id DESC
このクエリは、私が期待するすべてのものを返します。これは私のクエリです。どんな助けでも大歓迎です。
ありがとう!出来た。しかし、あなたの質問に「WHERE」の部分を説明してください。再度、感謝します。 –
@ ExoSkeleton321。 。 。単にチャットごとに最新の 'chatReply_id'を選択するだけです。これが相関サブクエリの仕組みです。 –
ええ、私はもっとそれを見ていくつもりです、ありがとう! –