私は、特定のトピックがあり、ユーザーが別のコメントにコメントしたり賛成票を投じたりできるディスカッション掲示板で作業しています。各コメントは、別のユーザーが返信することもでき、通知を受け取ります。
私の通知表
notification_id
通知を受け取るログイン ユーザーの user_id です。notification_from
ユーザーの投稿にコメントまたはいいね! をしたユーザーの user_id です。notification_topic
トピックの ID と、コメントか賛成票かを区別する通知のタイプです。notification_comment
トピックの comment_id です
+-------------+-----------------------------+----- --------------+-------------------------------------------------- ---+----------------------+-------------------+--- ----+--------------------------------+------------ ----------+---------+--------+ | | 通知 ID | 通知_pic | 通知名 | 通知タイトル | 通知ユーザー ID | 通知日 | 通知_から | 通知トピック | 通知コメント | タイプ | ステータス | +-------------+-----------------------------+----- --------------+-------------------------------------------------- ---+----------------------+-------------------+--- ----+--------------------------------+------------ ----------+---------+--------+ | | 1 | 32_1380182434_thumb.jpg | シーナ・サラザール | Chrysler が株式売却の書類を提出 | 2 | 1380188338 | 32 | 83_賛成票 | 1 | 賛成する | 読む | | | 2 | 32_1380182434_thumb.jpg | シーナ・サラザール | Chrysler が株式売却の書類を提出 | 2 | 1380188342 | 32 | 83_コメント | 1 | コメント | 読む | | | 3 | 93_1379990163_thumb.jpg | フォン・サムソン | Chrysler が株式売却の書類を提出 | 2 | 1380188505 | 93 | 83_賛成票 | 1 | 賛成する | 読む | | | 4 | 93_1379990163_thumb.jpg | フォン・サムソン | Chrysler が株式売却の書類を提出 | 2 | 1380188509 | 93 | 83_コメント | 1 | コメント | 読む | | | 5 | 93_1379990163_thumb.jpg | フォン・サムソン | Chrysler が株式売却の書類を提出 | 0 | 1380246975 | 93 | 83_コメント | 1 | コメント | 未読 | | | 6 | 93_1379990163_thumb.jpg | フォン・サムソン | 車両リコールのトヨタと日産 | 2 | 1380247149 | 93 | 225_コメント | 3 | コメント | 読む | | | 7 | default.gif | キャス・アギラー | Chrysler が株式売却の書類を提出 | 2 | 1380253584 | 7 | 83_コメント | 1 | コメント | 読む | | | 8 | default.gif | キャス・アギラー | Chrysler が株式売却の書類を提出 | 93 | 1380253870 | 7 | 83_コメント | 2 | コメント | 未読 | +-------------+-----------------------------+----- --------------+-------------------------------------------------- ---+----------------------+-------------------+--- ----+--------------------------------+------------ ----------+---------+--------+
私のクエリ
これは、テーブルをクエリしてグループ化する方法です。
SELECT *, COUNT(notification_topic) AS topic_count
FROM tbl_notification
WHERE notification_user_id = '{$_SESSION['id']}'
GROUP BY notification_topic
ORDER BY notification_date DESC
LIMIT 8
クエリの結果は次のとおりです。
+-------------+-----------------------------+----- --------------+-------------------------------------------------- ---+----------------------+-------------------+--- ----+--------------------------------+------------ ----------+---------+--------+-------------+ | | 通知 ID | 通知_pic | 通知名 | 通知タイトル | 通知ユーザー ID | 通知日 | 通知_から | 通知トピック | 通知コメント | タイプ | ステータス | トピック数 | +-------------+-----------------------------+----- --------------+-------------------------------------------------- ---+----------------------+-------------------+--- ----+--------------------------------+------------ ----------+---------+--------+-------------+ | | 6 | 93_1379990163_thumb.jpg | フォン・サムソン | 車両リコールのトヨタと日産 | 2 | 1380247149 | 93 | 225_コメント | 3 | コメント | 読む | 1 | | | 2 | 32_1380182434_thumb.jpg | シーナ・サラザール | Chrysler が株式売却の書類を提出 | 2 | 1380188342 | 32 | 83_コメント | 1 | コメント | 読む | 3 | | | 1 | 32_1380182434_thumb.jpg | シーナ・サラザール | Chrysler が株式売却の書類を提出 | 2 | 1380188338 | 32 | 83_賛成票 | 1 | 賛成する | 読む | 2 | +-------------+-----------------------------+----- --------------+-------------------------------------------------- ---+----------------------+-------------------+--- ----+--------------------------------+------------ ----------+---------+--------+-------------+
sqlfiddleで参照してください。
必要なもの
次のように、Facebook のような通知を表示できるように、カウントを取得する必要があります。
私の主な問題は、それぞれをで分離する必要があるため、 の前ではできないORDER
ことです。トピックごとにコメントやいいねをした最新のユーザーを表示したい。どうすればいいですか?notification_date
GROUP BY
notification_comment
notification_topic