ユーザー間のプライベートメッセージシステムを開発する必要があり、これが私がやりたいことです:
次のようなテーブルがあります。
id | from_user_id | to_user_id | message
1 | 1 | 2 | Hey n°1 ! <-- Me with user n°2
2 | 2 | 1 | Hey n°2 ! <-- Me with user n°2
4 | 1 | 3 | Hey n°3 ! <-- Me with user n°3
3 | 3 | 2 | Hey n°4 !
私はユーザー n°1 であると仮定します。ディスカッションとして、「ユーザーごとにグループ化」し、id 順に並べた最後のメッセージのリストを取得したいと考えています。
id | with_user_id | message
4 | 3 | Hey n°3 !
2 | 2 | Hey n°2 !
私は次のようなリクエストを試みました:
SELECT id, message,
(CASE WHEN from_user_id = 1 THEN to_user_id ELSE from_user_id END) AS with_user_id
FROM privates
WHERE from_user_id = 1 OR to_user_id = 1
GROUP BY with_user_id
ORDER BY id DESC
しかし、私はこれを取得しています:
id | with_user_id | message
4 | 3 | Hey n°3 !
1 | 2 | Hey n°1 !
問題は、最後のメッセージではなく、ユーザー番号 1 の最初のメッセージを選択することです。