SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.05.2008 14:38:37

bul
Участник
Зарегистрирован: 17.05.2008
Сообщений: 1

Помогите отсортировать повторение в запросе

Есть две таблицы:

f_topics (таблица топиков)

id_topic
name
dt_topic
views
kod_user
posts

f_posts (таблица сообщений пользователей на форуме)

id_post
text_post
dt_post
kod_user
kod_topic (связь с таблицей выше)

Делаю запрос, для получения пяти последних топиков, в которых самые свежие сообщения:

SELECT dt_post,name,id_topic FROM f_posts,f_topics
WHERE kod_topic=id_topic
ORDER BY dt_post DESC LIMIT 0,5

При этом запросе, в ситуации, когда два самых свежих сообщения в одном топике, выводится два раза один и тот же топик. Пробовал добавить DISTINCT - но положительного результата он не принес.

* dt - дата

Отредактированно bul (17.05.2008 14:39:12)

Неактивен

 

#2 17.05.2008 14:51:00

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Помогите отсортировать повторение в запросе

Потребуется подзапрос

SELECT max(p.id_post) FROM f_posts p JOIN f_topics t ON p.kod_topic=t.id_topic GROUP BY t.id_topic;

он выбирает последний пост из каждой темы

Далее в Вашем запросе дополнительное условие

SELECT dt_post,name,id_topic FROM f_posts,f_topics
WHERE kod_topic=id_topic
AND id_post IN (SELECT max(p.id_post) FROM f_posts p JOIN f_topics t ON p.kod_topic=t.id_topic GROUP BY t.id_topic)
ORDER BY dt_post DESC LIMIT 0,5
 

Это самый ясный, но не самый производительный путь, по оптимизации производительности см. http://sqlinfo.ru/forum/viewtopic.php?id=559

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson