好的,我正在使用PHP MySQL
我想为社交网站实施通知系统
目前我有2个表一个包含列的帖子
每当preson评论或喜欢特定帖子时,通知表中会插入1条新记录 通知表具有以下列
那么问题是我想从通知表中获取数据,需要通知用户。
例如 Mysql查询是
SELECT * FROM notifications WHERE src_id IN ("244","245","249") order by src_id
例如,我在通知表中有一些这样的数据
id type user_id src_id
1 like 6 244
2 comment 4 244
3 like 1 249
4 comment 8 249
5 comment 9 245
6 comment 3 244
7 like 12 244
如何通过src_id
对它们进行分组,在php中显示它这样我就可以生成类似这样的东西
4,3评论了你的帖子244
12,6喜欢你的帖子244
1喜欢你的帖子249
8评论了你的帖子249
其中4,3,12,6,1,8
是user_ids
答案 0 :(得分:0)
参见mysql GROUP_CONCAT示例
编辑:
SELECT
group_concat(`user_id`) as 'users'
, `type`
, `src_id` as 'post'
FROM `notifications`
WHERE `src_id` IN ("244","245","249")
group by `src_id`, `type`
ORDER BY `src_id`
答案 1 :(得分:0)
您可以在通知表中添加Sender
和Receiver
列来执行此操作。 Sender
列将包含执行活动的用户的ID,Receiver
列将包含在线用户的ID。
例如,用户B对用户A的帖子发表了评论。在这里,用户B将是发送者,用户A将是接收者。
接收在线用户的通知时,请执行SQL查询:
SELECT * FROM notifications WHERE Receiver='$online_user';
通知表的示例结构:
CREATE TABLE notifications(
NID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
Sender INT NOT NULL,
Receiver INT NOT NULL,
Type VARCHAR(255) NOT NULL,
Since INT NOT NULL,
FOREIGN KEY(Sender) REFERENCES users(user_id),
FOREIGN KEY(Receiver) REFERENCES users(user_id)
);