parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

2 Misha: три простых запроса (возвращаясь к напечатанному)

R. Averkov 24.08.2005 10:42

Есть таблица плоского форума со следующими столбцами: id, parent_id, date, author.

Задача: вывести список тем, отсортированных по дате последнего ответа, указав дату и автора последнего ответа.

Делал так:

1. Получаем отсортированный список тем
$subjs[^table::sql{SELECT
	root.id,
	IFNULL(MAX(child.id),root.id) AS last_id,
	root.date,
	root.author
FROM forum AS root
LEFT JOIN forum AS child ON root.id=child.parent
WHERE root.parent=0
ORDER BY last_id DESC}[$.limit($scroller.limit)$.offset($scroller.offset)]]
2. Получаем хеш с датами и авторами дочерних сообщений
$answers[^hash::sql{SELECT
	id,
	date,
	author
FROM forum
WHERE parent!=0
<... то, чего не хватает ...>
}]
3. Потом используем так:
$answers.[$subjs.last_id].author
<... то, чего не хватает ...>
Как я понимаю, здесь должно быть некое сочетание GROUP BY, ORDER BY и лимитов, которое выберет ответы, являющиеся последними для своего родителя. Но увы все, что я придумал написать, «возвращает все что угодно».

А может быть вообще по-другому надо? Подскажите, я сдаюсь :-)