Список топиков на форуме

SeaGull

Junior Member
Список топиков на форуме

Есть база форума:
id, login, topic, text, date, updated (когда обновлен "топик").

На первой странице надо вывести список всех topic'ов, отсортированный по updated, с информацией о первом сообщении в каждом из них (т.е. с минимальным date).

Ничего умнее, чем
select * from Forum GROUP BY topic ORDER BY updated DESC, date;
я не придумал, но оно работает не правильно.

Подскажите пожалуйста, как правильно построить запрос ?

Заранее спасибо.
 

RomikChef

Guest
Иправильно, что неправильно.
груп бай группируетс строки, к примеру, 5 строк - и откуда база знает, из какой из этих 5 строк информация тебе нужна?

Я так понимаю, что топик и дата у тебя дублируются во всех сообщениях топика? может, лучше сделать две таблицы?
Да и date - это же та же updated
 

RomikChef

Guest
В общем, у меня пока получилось запросить все, кроме автора последнего ответа
Структура таблицы
id
parent - ид первого сообщения в теме.
stamp - время
title - пустое у ответов.
author
body
Запрос получился такой
PHP:
select
max(b1.stamp) as last,
min(b1.stamp) as first,
if(b1.parent=0,b1.id,b1.parent) as thread,
count(if(b1.parent=0,b1.id,b1.parent)) as number,
b2.title,
b2.author 	
from Bboard b1, Bboard b2
where b2.id=if(b1.parent=0,b1.id,b1.parent) 
group by thread
order by last;
if-ы, в общем-то, можно убрать, если сразу после вставки первого сообщения в теме, сразу апдейтить его поле парент как last_insert_id

Но это уже детали. вот как бы мне автора последнего сообщения выковырять...
 

SeaGull

Junior Member
Спасибо, попробую.

Хотя, не знаю как у кого, а у меня выборка из двух баз занимает на порядок больше времени, чем из одной. Опыт показывает, что быстрее перебать несколько тысяч записей форума непосредственно в скрипте, чем завязываться на вторую, даже проиндексированую базу.

Впрочем, just imho.
 

RomikChef

Guest
Неправильное твое имхо.
Никакой совершенно разницы, в скольких таблицах (именно таблицах - базы тут не при чем) лежат данные.
Скорость зависит от правильности составления запроса и структуры таблиц.
 
Сверху