Facebookのように、ログインしたユーザーと彼がチャットしたことのあるユーザーとの間の最後のメッセージを取得する必要があります。これは facebook.com/messages ページのようになります。これが私が今までやってきたことです
データベース
user_table
- cwid
- first_name
- last_name
- user_image_link
message
- id
- cwid1 (送信者 ID)
- cwid2 (受信者 ID)
- message (メッセージの内容) - messagetime
(タイムスタンプ)
- userread (enum 'Y' 'N')`
クエリ にログインしたユーザーの ID は 1 です
SELECT
user_table.cwid,
message.cwid1,
message.cwid2,
message.message,
message.userread,
MAX(message.messagetime),
user_table.first_name,
user_table.last_name,
user_table.user_image_link
FROM message
INNER JOIN user_table
ON message.cwid1 = user_table.cwid
WHERE (cwid2="1")
GROUP BY cwid1
ORDER BY messagetime DESC
これは、ユーザーがメッセージを送信したすべての人から受信した最後のメッセージを返します。同様に、このユーザーが送信したすべてのメッセージも取得する必要があります。
SELECT
user_table.cwid,
message.cwid1,
message.cwid2,
message.message,
message.userread,
MAX(message.messagetime),
user_table.first_name,
user_table.last_name,
user_table.user_image_link
FROM message
INNER JOIN user_table
ON message.cwid1 = user_table.cwid
WHERE (cwid1="1")
GROUP BY cwid2
ORDER BY messagetime DESC
私はそれらの両方を異なるユーザーと混合し、Facebook メッセージのようにメッセージ時間でソートする必要があります。私は MySql の初心者です。どんな助けも大歓迎です。ありがとう!