3

通知システムを作り直して、多くの通知を1つにまとめられるようにしています。「アダムがあなたの質問に答えました」という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 に答える