MYSQL查询以检索评论和回复

时间:2018-12-05 14:49:56

标签: mysql sql data-structures subquery

我在编写mysql查询时遇到了麻烦,我知道我可以通过迭代来做到这一点,但是我相信可以在单个查询中实现,我希望有人可以指出正确的方向。

我有一个注释表和一个用户表。 我通过修改评论表以包含回复的评论ID来添加“回复评论”功能。

数据结构:

`comments`
  (`i` int(5) NOT NULL AUTO_INCREMENT
  ,`id` int (5) NOT NULL
  ,`deleted` tinyint NULL
  ,`articleId` int (5) NOT NULL
  ,`userId` VARCHAR (200) NOT NULL
  ,`comment` VARCHAR (2000) NOT NULL
  ,`replyTo` int (5) NULL
  ,`knownFrom` datetime NOT NULL
  ,`knownTo` datetime NOT NULL

'users'
  (`i` int(5) NOT NULL AUTO_INCREMENT
  ,`id` VARCHAR (200) NOT NULL
  ,`deleted` tinyint NULL
  ,`name` VARCHAR (200) NOT NULL
  ,`email` VARCHAR(200) NOT NULL
  ,`knownFrom` datetime NOT NULL
  ,`knownTo` datetime NOT NULL

目前,我正在使用以下查询检索评论:

SELECT 
c.id, c.articleId, c.userId, c.comment, c.replyTo, u.name, c.knownFrom 
FROM `comments` c 
INNER JOIN `users` u ON c.userId=u.id 
WHERE 
c.`articleId` = :articleId 
AND c.`deleted` IS NULL 
AND c.`knownTo` = '9999-12-31 23:59:59' 
AND u.`knownTo` = '9999-12-31 23:59:59'

如何检索这种格式的数据?

c.id    c.articleId    c.userId    c.comment    c.replyTo    u.name    c.knownFrom
 1           1             1        comment       null       user1       date
 2           1             2         reply         1         user2       date
 3           1             3         reply         1         user4       date
 4           1             4        comment       null       user3       date
 5           1             5        comment       null       user5       date

结构故障:

  • 检索所有评论文章。
  • 未回复的评论首先使用 “ repliedTo”列为空。
  • 回复在评论后加上相应的ID。

在单个查询或使用子选择中有可能吗?

这比遍历注释来检索答复好吗?

在此先感谢:-) !!

0 个答案:

没有答案