Перейти к содержимому

Сервис обмена электронных валют

Выбрать шаблон и создать сайт

  • Закрытая тема Тема закрыта

Запрос с лимитом

#1 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0
0

Отправлено 10 Март 2010 - 04:06

Например есть определенная таблица, в которую записываются авторы, дата публикации, ID.

Как сделать запросто последних двух публикация, но, чтобы они были от разных авторов?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 10 Март 2010 - 23:33

gaaarfild,
SELECT `*` FROM (SELECT `*` FROM `publications` ORDER BY `date` DESC) `t1` GROUP BY(`author`) ORDER BY `date` DESC LIMIT 2

И так, что мы делаем:
ОТОБРАТЬ все поля ИЗ (ОТОБРАТЬ все поля ИЗ `публикации` ОТСОРТИРОВАТЬ по полю `дата публикации` в ОБРАТНОМ ПОРЯДКЕ) это есть КУРСОР `t1` СГРУППИРОВАТЬ по `автор` ОТСОРТИРОВАТЬ по полю `дата публикации` в ОБРАТНОМ ПОРЯДКЕ и ВЗЯТЬ ТОЛЬКО 2

Курсор есть ничто иное, как временная таблица, сформированная по каким-то нужным нам условиям и отсортированная в нужном порядке.
То есть мы можем работать с курсором как с таблицей. Можем обращаться к его столбцам и так далее. Всё тоже самое.
  • 0

#3 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 11 Март 2010 - 06:19

Благодарен по уши! =)
  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 11 Март 2010 - 20:38

gaaarfild, Всегда рад помочь. Вроде корректно работает, но до пущей условности:
SELECT `test.*` FROM `test`, (SELECT `author`, max(`date`) as `sort` FROM `test` GROUP BY(`author`) ORDER BY `date`) `t1` WHERE `test.author`=`t1.author` AND `test.date` =` t1.sort` ORDER BY `sort` LIMIT 2

  • 0


Оформление форума – IPBSkins.ru