Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод последних по дате записей
 
 автор: kien   (03.12.2008 в 13:23)   письмо автору
 
 

Добрый день,
Может быть кто-нибудь подскажет как реализовать вывод последних от сегодня 20 записей в базе в случайном порядке?
структура таблицы такая:


id | name | date_input
------------------------------
1  | aaaa  | 2008-12-1
2  | bbbb  | 2008-11-27
3  | ccccc | 2008-11-23


Это можно прописать в запросе или надо уже с помощью PHP?
Заранее спасибо

  Ответить  
 
 автор: ols   (03.12.2008 в 18:46)   письмо автору
 
   для: kien   (03.12.2008 в 13:23)
 

$sql = "SELECT * FROM table WHERE date_input = now() ORDER BY RAND() LIMIT 20 ";

  Ответить  
 
 автор: Kien   (03.12.2008 в 19:03)   письмо автору
 
   для: ols   (03.12.2008 в 18:46)
 

Спасибо, но я наверно не совсем понятно обьяснил ситуацию.

Уточню: нужно выбрать последние 20 записей по полю date_input, значение которого будет <=now(), то есть за сегодня, вчера итд. и выводить их в случайном порядке.

  Ответить  
 
 автор: ols   (03.12.2008 в 19:12)   письмо автору
 
   для: Kien   (03.12.2008 в 19:03)
 

>...от сегодня 20
До сегодня включительно

Ну так поставьте в условие <= и будет вам счастье

  Ответить  
 
 автор: Kien   (03.12.2008 в 19:17)   письмо автору
 
   для: ols   (03.12.2008 в 19:12)
 

Неа, тогда выбирает вообще из всех до сегодня, а мне надо только 20 последних

  Ответить  
 
 автор: ols   (03.12.2008 в 19:47)   письмо автору
 
   для: Kien   (03.12.2008 в 19:17)
 

Тогда попробуйте так, если правильно понял

SELECT * FROM table WHERE date_input <= now() ORDER BY input_data DESC,  RAND('input_data') LIMIT 20

  Ответить  
 
 автор: Kien   (03.12.2008 в 19:55)   письмо автору
 
   для: ols   (03.12.2008 в 19:47)
 

Супер, спасибо большое!!!

  Ответить  
 
 автор: Trianon   (03.12.2008 в 20:14)   письмо автору
 
   для: Kien   (03.12.2008 в 19:55)
 

неужели получилось в случайном порядке? :)

  Ответить  
 
 автор: ols   (03.12.2008 в 20:25)   письмо автору
 
   для: Trianon   (03.12.2008 в 20:14)
 

Вы правы, нужного результата видимо одним запросом не достигнуть.
Скорее всего можно сделать так
SELECT * FROM table WHERE date_input <= now() ORDER BY input_data DESC LIMIT 20
и уже при помощи php, функции rand() выводить их в случайном порядке.

Ну или Trianon покажет нам как это делается одним запросом)

  Ответить  
 
 автор: Trianon   (03.12.2008 в 20:51)   письмо автору
 
   для: ols   (03.12.2008 в 20:25)
 

Через php - да, пройдет.

Я не покажу.
Запросы типа "вывести в случайном порядке" кроме брезгливости у меня никаких чувств не вызывают.

Да и если бы - LIMIT во вложенных запросах в MySQL не действует.

  Ответить  
 
 автор: kien   (04.12.2008 в 16:55)   письмо автору
 
   для: ols   (03.12.2008 в 20:25)
 

Да, действительно я как-то рано обрадовался......)

Может подскажете как через функцию вывести названия и номер?

  Ответить  
 
 автор: oradev   (04.12.2008 в 07:37)   письмо автору
 
   для: kien   (03.12.2008 в 13:23)
 

поле date_input не DATETIME случаем?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования