@fedornabilkin

Возможен ли запрос с подзапросами для одной таблицы?

Здравствуйте. Есть таблица с обращениями helpdesk. Когда юзер создает обращение, в поле parent записываем 0 и по этой колонке выводим список обращений для поддержки.
Когда юзер или поддержка пишут ответ (комментарий) к обращению, то запись осуществляется в эту же таблицу helpdesk, только в parent записывается id записи обращения, чтобы на странице обращения (support.php?id=1) вывести текст обращения и все комментарии (ответы) юзера и поддержки. Типа SELECT * FROM helpdesk WHERE id = '$desk_id' OR parent = '$desk_id' ORDER BY id ASC ;

А теперь понадобилось на странице списка обращений (parent = '0') определить автора последнего сообщения, юзер это был или сотрудник поддержки. И вот что-то я никак не могу сообразить, возможно ли такое сделать одним запросом с подзапросами?

Если сгруппировать комментарии по parent, то как определить последний комментарий?
Если выбрать последние комментарии, то как в таком случае получить уникальных авторов и значение parent?

Чувствую решение где-то на поверхности.
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Возможен. JOIN таблицы с самой собой можно делать неограниченное число раз.
SELECT `h`.*, `h1`.`author`
  FROM `helpdesk` AS `h`
  LEFT JOIN (
    SELECT `t1`.`parent` AS `parent`, `t2`.`author` AS `author`
      FROM (
        SELECT `parent`, MAX(`datetime`) AS `maxtime`
          FROM `helpdesk`
          WHERE `parent` != 0
          GROUP BY `parent`
      ) AS `t1`
      JOIN `helpdesk` AS `t2` ON `t2`.`parent` = `t1`.`parent`
        AND `t2`.`datetime` = `t1`.`maxtime`
  ) AS `h1` ON `h1`.`parent` = `h`.`id`
  WHERE `h`.`parent` = 0
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы