Возможен ли запрос с подзапросами для одной таблицы?
Здравствуйте. Есть таблица с обращениями 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?
Для правильного вопроса надо знать половину ответа
Возможен. 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