将许多通知合并为一个

时间:2013-01-15 13:15:18

标签: php mysql select group-by

我正在重新创建我的通知系统,以便能够将多个通知组合到一个通知系统中。而不是显示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的数量。你觉得怎么样?

1 个答案:

答案 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