チャットの会話履歴テーブルから特定のユーザの会話履歴を会話対象ユーザ毎にセットで取得がしたいです。
以下のようなテーブルが有るとし
UserTable
user_id | name |
---|---|
1 | タナカ |
2 | スズキ |
3 | サトウ |
以下のような形で会話履歴を保存しています。
ChatTable
id | send_id | receive_id | text |
---|---|---|---|
1 | 1 | 2 | こんにちわ |
2 | 2 | 1 | やあ、こんにちわ |
3 | 1 | 2 | 今日はいい天気だね |
4 | 2 | 3 | やあ |
5 | 1 | 3 | こんにちわ |
ここでユーザID1のタナカさんの会話履歴を取得する時に、以下のような形で取得がしたいと考えています。
chatData=>{ "2"=>{[1,2,3]} "3"=>{[5]}
ここでのKeyとなる2と3はUserTableのUser_IDでして、各対象ユーザとの会話データをまとめて取得しているような形です。
該当するデータを取得するには Where send_id = ?i or receive_id = ?i
といった形で自身のユーザIDをセットする事で一度に全データを取得できるので、これら情報を元に再度クエリを描いて対象ユーザ毎にデータを取得する事は可能なのですが、これだと会話履歴の有るユーザ数だけ処理が回るので効率的ではありません。
まとめて処理をする際の記法をご教授願います。
あなたの回答
tips
プレビュー