我正在重新创建我的通知系统,以便能够将多个通知组合到一个通知系统中。而不是显示9行说“亚当回答了你的问题”,它可以说“9个人已经回答了你的问题”。
我当前的通知表如下所示:
notification_id (PK) | recipient_id | sender_id | type | foreign_id | date | viewed
Recipient_id是获取通知的人。 Sender_id就是它的来源。类型是什么样的通知,所以我知道应该说什么,“xx已经回答”或“xx喜欢你的帖子”。 Foreign_id可以是问题的ID。
哪个是创建这个“组合”系统的最佳方式?我应该在有新答案时更新通知并说出其他人也已回答,或者查询是否可以计算相同foreign_id的数量。你觉得怎么样?
答案 0 :(得分:3)
试试这个:
SELECT foreign_id, SUM(IF (TYPE= 'like', 1, 0)) likecnt,
SUM(IF(TYPE = 'answer', 1, 0)) anscnt
FROM notification
GROUP BY foreign_id
编辑:检查
SELECT n.foreign_id, n.sender_id
FROM notifications n
INNER JOIN (SELECT foreign_id, MAX(DATE) DATE
FROM notifications
GROUP BY foreign_id, user_id
) a ON n.foreign_id = a.foreign_id AND n.date = a.date