社区app开发之评论:评论表设计,以及 查询评论列表且同时查出每条一级评论下的“子评论数量“
1. 评论表设计:CREATE TABLE `community_comment` (`id` varchar(32) NOT NULL COMMENT '主键',`article_moment_id` varchar(32) DEFAULT NULL COMMENT '文章动态Id',`parent_id` varchar(32) DEFAULT '0' COMMENT '父Id',`comme
·
1. 评论表设计:
CREATE TABLE `community_comment` (
`id` varchar(32) NOT NULL COMMENT '主键',
`article_moment_id` varchar(32) DEFAULT NULL COMMENT '文章动态Id',
`parent_id` varchar(32) DEFAULT '0' COMMENT '父Id',
`comment` varchar(500) DEFAULT NULL COMMENT '评论内容',
`from_user_id` varchar(32) DEFAULT NULL COMMENT '评论用户Id',
`to_user_id` varchar(32) DEFAULT NULL COMMENT '被回复用户Id',
`status` char(1) DEFAULT '0' COMMENT '状态(0-正常, 1-删除, 2-禁播)',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='评论'
注意:status 状态 字段 2 是禁播,就是禁止播放,管理员 可以在后台操作
2. 向 评论表 insert 一些数据:
INSERT INTO `community_comment`(`id`,`article_moment_id`,`parent_id`,`comment`,`from_user_id`,`to_user_id`,`status`,`create_date`) VALUES ('1','1','0','1','1','2','0','2020-07-28 09:47:38'),('10','1','0','10','1','2','2','2020-07-29 14:42:12'),('11','1','0','11','1','2','0','2020-07-29 14:42:21'),('2','1','0','2','1','2','0','2020-07-28 14:05:52'),('3','1','1','3','1','2','0','2020-07-28 14:06:08'),('4','1','1','4','1','2','0','2020-07-28 14:08:11'),('5','1','2','5','1','2','0','2020-07-28 14:25:06'),('6','1','0','6','1','2','0','2020-07-28 14:25:51'),('7','1','0','7','1','2','0','2020-07-29 14:41:19'),('8','1','0','8','1','2','0','2020-07-29 14:41:47'),('9','1','0','9','1','2','0','2020-07-29 14:42:00');
3. 查询语句,仅作参考:
-- 查询评论列表且同时查出每条一级评论下的"子评论数量"
SELECT *
FROM
(
SELECT a.*,
b.user_name AS from_user_name, b.avatar AS from_user_face,
c.user_name AS to_user_name, c.avatar AS to_user_face
FROM community_comment a
LEFT JOIN sys_user b ON a.from_user_id = b.user_id
LEFT JOIN sys_user c ON a.to_user_id = c.user_id
WHERE a.article_moment_id = '1'
) aa
LEFT JOIN
(
-- 根据 parent_id (父id) 分组
SELECT d.parent_id, COUNT(d.parent_id) AS sub_comment_num
FROM (
-- 根据文章动态id 查询出评论
SELECT * FROM community_comment WHERE article_moment_id = '1'
) d
GROUP BY d.parent_id
) bb
ON aa.id = bb.parent_id
WHERE aa.parent_id = '1' AND aa.status = '0'
ORDER BY bb.sub_comment_num DESC
更多推荐
所有评论(0)