- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 CMS 构建消息系统,但找不到获取消息链中未读消息数量的方法。
我需要一种方法来查明主要消息或其任何回复消息是否未读。
我有一个名为“messages”的表,其中包含以下字段:id、事件[1,0]、主题、消息、日期时间、user_from、user_to、回复、查看、删除
当阅读消息时,我将用户 ID 以逗号分隔存储在查看的字段中:,3,4,12,
然后,为了查明它是否被查看,我会像这样查找发件人的 ID:
m.viewed LIKE '%,$user_id,%'
我只是弄清楚如何将该逻辑放入此 SQL 选择中,以便我可以查看是否应将父消息标记为未读。以下 SQL 效果很好,可以获取所有消息和回复数量,并按日期时间对它们进行排序。
SELECT m.*, COUNT(*) AS num_replies, MAX(r.datetime) AS max_datetimeunread_replies
FROM directus_messages AS m
LEFT JOIN directus_messages as r
ON m.id = r.reply
WHERE m.active = '1'
AND m.removed NOT LIKE '%,$user_id,%'
GROUP BY m.id
HAVING m.reply = '0'
ORDER BY datetime DESC, max_datetime DESC
任何帮助将不胜感激......我无法理解它!
最佳答案
您应该查看这篇文章:Managing Hierarchical Data in MySQL
--编辑--更新
好的,您只有 1 级回复,因此不需要上述内容。
试试这个:
SELECT m.*
, COUNT(*) AS num_replies
, MAX(r.datetime) AS max_datetime
, (m.viewed LIKE '%,$user_id,%')
AS message_viewed --shows True or False
, SUM(r.viewed NOT LIKE '%,$user_id,%')
AS unread_replies --shows number of unread replies
FROM directus_messages AS m
LEFT JOIN directus_messages as r
ON m.id = r.reply
WHERE m.active = '1'
AND m.removed NOT LIKE '%,$user_id,%'
GROUP BY m.id
HAVING m.reply = '0'
ORDER BY m.datetime DESC
, max_datetime DESC
;
关于php - SQL 显示未读消息数...包括未读回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5402195/
我正在尝试实现类似于电子邮件中的已读/未读的功能。我如何通过使用 jquery、php 和 mysql 来实现。我想分步执行的操作: 1- 当我单击 html 表中的一行时,我更改了此消息在数据库中的
如何确定消息状态(已读/未读)。聊天是通过 XMPP 协议(protocol)实现的。 最佳答案 XEP-0184 : Message Delivery Receipts 支持在消息已送达时通知发件人
上下文:我们正在实现一个新闻应用程序。现在,您可以假设所有用户的新闻都是相同的,并根据我们设置的参数(根据趋势和日期)维护订单。 问题:我们不确定跟踪用户阅读内容的最佳实现是什么。我们希望能够配置一种
好吧,另一个有趣的问题是 50 号公路。 我们想实现一个真正的论坛灯泡系统,其中用户未读的帖子(在创建用户帐户后)显示为未读,直到该状态被清除或直到用户阅读它们。 我们认为最好和最简单的方法是实现一个
我正在使用来自 google reader's API 的数据开发应用程序并使用 GData用于登录。 我希望能够将表格单元格内的帖子标记为已读/未读,但我发现这主要是未记录的,很难找到解决方案,有什
我的 C 程序已从 Linux 上的 TCP 套接字读取(使用 read(2) 或 recv(2))几个字节。是否可以将这些字节推回,以便后续的 read(2) 和 recv(2) 调用(在我无法控制
我是一名优秀的程序员,十分优秀!