[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: DISTINCT и ORDER BY
grant
Вобщем нужно выбрать уникальных 5 записей из таблицы сообщений. Дело в том, что эти 5 записей ещё нужно сортировать по дате сообщения...без DISTINCT всё нормально, с DISTINCT в обратном порядке...


SELECT DISTINCT thread_id FROM forummessage ORDER BY DATE DESC LIMIT 5


помогите плиз))



Спустя 6 минут, 29 секунд (26.09.2011 - 18:30) alex12060 написал(а):
Значит сделай не DESC, a ASC

:)

А вообще, странное поведение.

SELECT DISTINCT `thread_id` FROM `forummessage` ORDER BY `DATE` DESC LIMIT 5;

Спустя 2 минуты, 44 секунды (26.09.2011 - 18:33) Winston написал(а):
Цитата (grant @ 26.09.2011 - 18:23)
ORDER BY DATE DESC

Для чего в запросах SQL используются обратные апострофы (`)?
Для того, чтобы не было ошибки, когда название поля совпадает с одним из зарезервированных слов SQL !
Это нужно запомнить раз и навсегда.

Спустя 22 минуты, 47 секунд (26.09.2011 - 18:55) grant написал(а):
Цитата (alex12060 @ 26.09.2011 - 15:30)
Значит сделай не DESC, a ASC

:)

А вообще, странное поведение.

SELECT DISTINCT `thread_id` FROM `forummessage` ORDER BY `DATE` DESC LIMIT 5;

сегодня, 19:49

сегодня, 18:25

сегодня, 19:50

сейчас выводит так biggrin.gif (3 темы)

Спустя 2 минуты, 6 секунд (26.09.2011 - 18:57) alex12060 написал(а):
Если можно, дамп сюда.

Спустя 1 минута, 43 секунды (26.09.2011 - 18:59) Игорь_Vasinsky написал(а):
SELECT  `thread_id` FROM `forummessage` ORDER BY `DATE` DESC GROUP BY `DATE` LIMIT 5;


а так?

Спустя 4 минуты, 21 секунда (26.09.2011 - 19:03) inpost написал(а):
grant
сегодня, 19:50 ? Это такая запись у тебя в date ? smile.gif

Спустя 3 минуты, 38 секунд (26.09.2011 - 19:07) Игорь_Vasinsky написал(а):
видимо VARCHAR.

А ты поставь TIMESTAMP

Спустя 33 секунды (26.09.2011 - 19:08) grant написал(а):
Цитата (Игорь_Vasinsky @ 26.09.2011 - 15:59)
<pre class="sh_sourceCode" rel="sql"><span class="sh_keyword">SELECT</span>  <span class="sh_att">`thread_id`</span> <span class="sh_keyword">FROM</span> <span class="sh_att">`forummessage`</span> <span class="sh_keyword">ORDER BY</span> <span class="sh_att">`DATE`</span> <span class="sh_keyword">DESC GROUP BY</span> <span class="sh_att">`DATE`</span> <span class="sh_keyword">LIMIT</span> <span class="sh_number">5</span><span class="sh_symbol">;</span></pre>

а так?

также...

вот вобщем таблица и 3 записи


CREATE TABLE IF NOT EXISTS `forummessage` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`thread_id` int(11) NOT NULL,
`content` text NOT NULL,
`author_id` int(11) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
)


INSERT INTO `forummessage` ( `thread_id`, `content`, `author_id`, `date`) VALUES
(1, 'asd', 1, '2011-09-26 19:02:10'),
(
3, 'asdad', 1, '2011-09-26 19:59:41'),
(
2, 'asdad', 1, '2011-09-26 20:00:10');


должно вывести 2 3 1

Спустя 1 минута, 16 секунд (26.09.2011 - 19:09) grant написал(а):
Цитата (inpost @ 26.09.2011 - 16:03)
grant
сегодня, 19:50 ? Это такая запись у тебя в date ? smile.gif

нет, это я дату преобразую своей ф-цией)))

Спустя 1 минута, 25 секунд (26.09.2011 - 19:10) inpost написал(а):
grant
И? Сделал запрос с ASC, и с DESC. Один в одну сторону, другой в другую. Что не так?

Спустя 3 минуты, 34 секунды (26.09.2011 - 19:14) grant написал(а):
Цитата (inpost @ 26.09.2011 - 16:10)
grant
И? Сделал запрос с ASC, и с DESC. Один в одну сторону, другой в другую. Что не так?

да ну нафиг, дай скрин)))

Спустя 6 минут, 45 секунд (26.09.2011 - 19:21) inpost написал(а):
Это ты запусти оба запроса в PMA и дай скрин!

Спустя 2 минуты, 42 секунды (26.09.2011 - 19:23) grant написал(а):
Цитата (inpost @ 26.09.2011 - 16:21)
Это ты запусти оба запроса в PMA и дай скрин!

Спустя 15 минут, 10 секунд (26.09.2011 - 19:39) inpost написал(а):
сделай SELECT * , так будет нагляднее.

Спустя 18 минут, 28 секунд (26.09.2011 - 19:57) grant написал(а):

SELECT * FROM (
SELECT thread_id,max(date) as date
FROM forummessage
GROUP BY thread_id
) AS m INNER JOIN forumthread AS t ON m.thread_id=t.id ORDER BY m.date DESC


вот это вроде как помогло...но кажется что бред)

Спустя 56 минут, 12 секунд (26.09.2011 - 20:53) forza написал(а):
В базе 3 записи, а лимит 5, что-то не сходится

Спустя 48 минут, 41 секунда (26.09.2011 - 21:42) dadli написал(а):
grant
если я правилно понял тебе, то нужно что то такое:


SELECT * FROM forummessage WHERE
`date` IN
(SELECT MAX(`date`) FROM forummessage GROUP BY thread_id )
ORDER BY `date` DESC LIMIT 5

Спустя 3 минуты, 52 секунды (26.09.2011 - 21:46) Игорь_Vasinsky написал(а):
Скрин сортировал по id DESC
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.