Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблицы themes, messages
Хочу сделать запрос, выбирающий название тем, количество сообщений в каждой теме, ник автора первого поста каждой темы, ник автора последнего поста. В мускуле пока не особо шарю, но вот что нашаманил
SELECT t.name, t.id, m.nick COUNT(m.id) AS count FROM
themes AS t LEFT JOIN messages AS m ON t.id = m.tid WHERE t.fid = '".$fid."' GROUP BY t.id, t.name ORDER BY t.time DESC
themes
------------------------------------------------------
id | fid | name | time
-------------------------------------------------------
1 | 1 | Васина тема | 123478
2 | 1 | Тема другого автора |123456
messages
------------------------------------------------
id | tid | nick | message
------------------------------------------------
1 | 1 | vasya | текст Васи
2 | 1 | petya | текст Пети
3 | 1 | denis | текст ....
Нужно получить результирующий массив, распечатав, который
Васина тема / автор vasya / последнее сооб. denis / сообщений 3
Тема другого автора / ........... / ........... / ...
никак не могу придумать, как сделать вывод автора последнего сообщения.
Неактивен
GROUP BY делает группировку по определенным полям (и неявную сортировку). Если Вы указали в SELECT поля, по которым не производится группировка без агрегирующих функций (MAX, SUM, AVG, GROUP_CONCAT, ...), то MySQL выберет произвольного представителя группы. Стандарт SQL запрещает такие запросы, но MySQL, к сожалению, их обрабатывает из-за чего возникают непредзказуемые запросы.
Таким образом, ваш запрос не гарантирует вам выдачу автора первого поста.
Для этого вам необходимо внести в таблицу messages поле, содержащее время добавления сообщения - message_time.
Нужный вам запрос будет выглядеть следующим образом:
Неактивен
vasya, большое спасибо!
Отредактированно Gefest (14.07.2009 04:08:34)
Неактивен