MYSQL-запрос для получения комментариев и ответов - PullRequest
0 голосов
/ 05 декабря 2018

У меня проблемы с написанием запроса MySQL, я знаю, что могу сделать это с помощью итерации, но верю, что это может быть достигнуто за один запрос, я надеюсь, что кто-то может указать мне правильное направление.

У меня есть таблица комментариев и таблица пользователей.Я добавляю функцию «Ответить на комментарий», изменяя таблицу комментариев так, чтобы она содержала идентификатор комментария, на который был дан ответ.

структура данных:

`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

В настоящее время я получаю комментарии, используя приведенные нижеquery:

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', равным нулю.
  • Ответы следуют за комментарием с соответствующим идентификатором.

Возможно ли это водин запрос или с помощью суб-выбора?

Это лучше, чем итерация по комментариям для получения ответов?

Заранее большое спасибо :-) !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...