3

我正在重新创建我的通知系统,使其能够将许多通知合并为一个。它可以显示“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。你怎么看?

4

1 回答 1

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
于 2013-01-15T13:33:13.463 回答