我设计了一个表结构的群聊(读取功能,用户和工作人员很多)。

我想获取工作人员未读邮件的列表,但我不能。如果写什么查询,还是将检索未读消息列表。

的SQL

    select * 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


表结构

    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: (Comments posted on their own will not be registered as read)
    1, 1, null, 1
    2, 2, 1, null
    3, 1, null, 2 <- foo staff also read not do anything
    4, 2, null, 2

最佳答案

从我的角度来看,您可以在聊天表中包含一个标志,您可以在其中管理聊天消息的状态。

因此您可以这样查询:

select * from chat c, chat_group cg where c.chat_group_id = cg.id and c.status = 'READ';


您可以将标志设置为int,并从代码中创建一个枚举来管理它。这是我们在https://www.applozic.com处解决的类似问题

关于mysql - 我想获取群聊的未读评论列表(mysql,sql),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39675712/

10-09 16:36