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

Bulbazavr

Guest
Сортировка по последнему ответу в форуме ?

Сделал форум, теперь осталось сделать чтобы вверх поднималась тема в которую позже всего отвечали, а как это организовать никак не догоню :((
 

Bulbazavr

Guest
форум на Mysql.
Как просто вывести последнюю тему вверх это понятно,а как сделать чтобы она поднималась при ответе в неё ?
вот как здесь.Я сейчас ответил и эта тема будет выше других.
 

woland

Guest
Создай для каждой темы свой timestamp. Обновляй этот timestamp после каждого поста в этой теме.
А потом выводи записи order by timestamp desc, как тебе уже посоветовали.
 

Bulbazavr

Guest
я так и делаю, но я думал может можно по другому :(
 

Bulbazavr

Guest
то, что приходится дважды обращаться к базе
 

RomikChef

Guest
Бульба. Значит так.
Тебе дается возможность написать один контрольный ответ.
По нему я буду судить о твоей способности внятно изложить
свой вопрос. Не какие-то обрывки, которые ты бормочешь себе под нос, ИМЕЯ В ВИДУ, как у тебя там все устроено, а внятное изложение твоей проблемы, с учетом того, что мы, ТУТ, ничего про устройство твоего форума не знаем, куда и зачем ты обращаешься - не ведаем, запросов, которые ты ИМЕЕШЬ в виду - в глаза не видели.

Если будет проодолжаться та же игра, что и раньше - я закрываю тему и ищи себе других помощников. Я тебе посоветую гадалку.
 

Bulbazavr

Guest
:) В общем есть две таблицы:
одна с темами форума и другая с ответами.В первой хранится имя пользователя,тема,дата,UID.Во второй имя пользователя,ответ,дата,ID темы,UID.При ответе на тему ответ добавляется во вторую таблицу,а все темы выбираются из первой и сортируются по дате создания темы, а надо чтобы сортировались по дате последнего ответа из второй таблицы.
 

RomikChef

Guest
то есть, тебя смущает что при записи тебе приходится де6лать два запроса, а не один?
пусть тебя это не смущает.
 

alpes

Весь мир на ладони
Значит так. Твою первую таблицу надо подправить - поля "имя пользователя" и "дата" (я так понимаю создавшего на момент...) выбросить, ибо это есть избыточная информация, которая хранится во второй таблице. Получим следующую структуру таблиц:

Таблица1 'Topic':
IdTopic - int AUTO_INCREMENT PRIMARY KEY
Title

Таблица2 'Message':
IdMessage - int AUTO_INCREMENT PRIMARY KEY
NameUser
DateTime
Message
LinkIdTopic

Для вывода названия темы (в порядке убывания новых ответов), логина создавшего тему и даты последнего обновления нужен один запрос:

SELECT T.Title, M.NameUser, MAX(M.DateTime) as MaxDate
FROM Topic as T, Message as M
WHERE T.IdTopic=M.LinkIdTopic
GROUP BY T.IdTopic ORDER BY MaxDate DESC
 

alpes

Весь мир на ладони
Можешь в селект еще добавить:
, COUNT(*)-1
- собственно количество ответов по топику :)
 

RomikChef

Guest
алпес, а ты уверен, что это хорошая мысль?
точнее - обе.

избыточность часто используется для ускорения работы.
Как на этом форуме, например.
И не факт, что лучше - экнонмить место на спичках, или быстрее обслуживать посетителя.

COUNT(*)-1
это что-то слишком.
единичку отнять можно и более простыми способами.

мне все меньше и меньше нравятся твои методы.

Бульба.
Ты поосторожнее с этим человеком.
Он из тех, которые 2х2 вычисляют с точностью до миллиона знаков после запятой.

А если уж так уж оптимизировать таблицы, то тогда таблица топиков и вовсе не нужна.
 

alpes

Весь мир на ладони
алпес, а ты уверен, что это хорошая мысль?
точнее - обе.
избыточность часто используется для ускорения работы.
Как на этом форуме, например.
И не факт, что лучше - экнонмить место на спичках, или быстрее обслуживать посетителя.
Возможно, комуто так легче потом выборку строить, но в серьезных проектах то что предлагаешь... :D
Ты знаком с проработкой структуры данных, приведением к нормальным формам?!
Бульба.
Ты поосторожнее с этим человеком.
Он из тех, которые 2х2 вычисляют с точностью до миллиона знаков после запятой.
Слухай, а как думаешь: у Бульбы своя кумекалка есть? Или без тебя не обойтись...
А если уж так уж оптимизировать таблицы, то тогда таблица топиков и вовсе не нужна.
Да нет, зачем название темы постить в сообщениях, дешевле будет поставить ссылку, да и если нужно отредактировать тему - делаешь это в одном месте. А еще атрибуты "тема закрыта/открыта", "перемещена" ...

2RomikChef, не пойму когда эт я тебе на хвост успел наступить или мне тока спрашивать моно
 

.des.

Поставил пиво кому надо ;-)
Ты знаком с проработкой структуры данных, приведением к нормальным формам?!
Пятая НФ это конечно хорошо.. но вот оправдано ли? :)

Это я к тому что.. дублирование информации и соответственно забивание на принципы проектирования ради ускорения селектов, зачастую оправдано..


З.Ы. Ни в коем случае нельзя считать вмешательством в ваш диалог :)
 
Сверху