【发布时间】:2015-05-30 09:17:30
【问题描述】:
我的问题是我正在尝试创建一个聊天消息系统,
这是我目前所拥有的。
Chat
chat_id | member_id | added
Member to Chat
member_to_chat_id | member_id | chat_id
Chat Message
chat_message_id | member_to_chat_id | message | added
所以我想获取所有涉及成员的聊天。我就是这样做的
Select c.chat_id
From member_to_chat m2c
Left Join chat c ON c.chat_id = m2c.chat_id WHERE m2c.member_id = 1
GROUP by c.chat_id
小提琴来了 http://sqlfiddle.com/#!9/4d1ab/1
有没有办法获取此群聊中的最后一条消息并确定它的成员是谁?
预期的结果应该是这样的
如果用户 Alex 在两个聊天中,并且他写了最后一条消息
chat_id | member_name | member_message
1 Alex Test1
2 Alex Test2
稍后,如果其他人在 id 1 的聊天中添加消息,我们仍然会通过用户 id 1:Alex 获得所有聊天,但该消息应该来自另一个成员,所以如下所示:
chat_id | member_name | member_message
1 John Last Test1
2 Alex Test2
希望现在有意义。
【问题讨论】:
-
为了清楚起见,你能提供想要的结果吗?
-
感谢您的评论,结果必须是这样的 chat_id |最后写到此聊天的成员 |此聊天中的最后一条消息,1 |亚历克斯 | 1 |测试信息 1 2 |约翰 | 2 |测试信息 2 3 |亚历克斯 | 1 | 123 我不知道模式是否正常,我只是发明了它,我认为我可以在 chat_message -> chat_id 中添加另一个键,这样我就可以在那里拥有聊天 id,然后用一个左连接来获取它,但是我想知道是否有办法在不添加另一个键的情况下获得它,提前谢谢,如果我的英语不太好,对不起。
-
请相应地编辑您的问题。
-
我对您的架构感到困惑,无法提供答案,但足以说明 SQL 中没有问题适合接受的答案。
-
嗨@Alex,我的回答有一些改进,我为你的问题找到了比我提供给你的第一个更好的解决方案:) 所以我认为你应该检查一下。
标签: jquery mysql chat messages