お世話になります。
グループチャット(既読機能つきで、スタッフとユーザでテーブルが分かれていて、多対多)のテーブルを考えています。
あるスタッフ(staff)の未読のメッセージ一覧を取得したいのですが、何時間か考えてもクエリが思い浮かびません。どのようなクエリを書けば、未読のメッセージを取り出せるでしょうか。
途中までのクエリ(テーブルの結合のみ。条件が思い浮かばない)
sql
1select * from chat as c inner join chat_group as cg on c.chat_group_id = cg.id left join chat_read cr on c.id = cr.chat_id 2
テーブル構造 user: id, name staff: id, name chat_group: id, name chat: id, chat_group_id, user_id, staff_id, comment chat_read: id, chat_id, user_id, staff_id
データ例 user: 1, hoge_user 2, foo_user staff: 1, hoge_staff 2, foo_staff chat_group: 1, test_group chat: 1, 1, null, 1, "hello hoge_staff" 2, 1, 1, null, "hello hoge_user" chat_read: (自分で投稿したコメントは既読として登録されない) 1, 1, null, 1 2, 2, 1, null 3, 1, null, 2 <- 既読しかしないfoo_staff 4, 2, null, 2
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。