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

Форум MySQL

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

 

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

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

тема: Запрос к базе с двумя типами сортировки одновременно
 
 автор: Владимир22   (28.06.2007 в 18:57)   письмо автору
 
 

Подскажите, как можно вывести изи базы 5 записей, причём:
Первые две должны быть выведены по дате (desc), а 3,4,5 - рандомные (rand).
Можно, конечно, сделать вывод за два раза, типа:

$res=mysql_query("select * from mes order by `date` DESC LIMIT 2"); 
$res2=mysql_query("select * from mes order by RAND()  LIMIT2,3"); 

но, уверен, что можно сделать и один универсальный запрос. Вопрос только как?

   
 
 автор: Unkind   (28.06.2007 в 19:47)   письмо автору
 
   для: Владимир22   (28.06.2007 в 18:57)
 

-

   
 
 автор: Владимир22   (29.06.2007 в 01:13)   письмо автору
 
   для: Unkind   (28.06.2007 в 19:47)
 

Unkind, спасибо за исчерпывающий ответ :)

   
 
 автор: cheops   (29.06.2007 в 10:31)   письмо автору
 
   для: Владимир22   (28.06.2007 в 18:57)
 

Одним не получится, при использовании оператора UNION - одна из конструкций ORDER BY неизбежно будет игнорироваться.

   
 
 автор: Trianon   (29.06.2007 в 12:31)   письмо автору
 
   для: cheops   (29.06.2007 в 10:31)
 

Не получится, но я полагаю, несколько по другой причине.
И ORDER BY и LIMIT применяются не к результату отдельных SELECTов, а к результату всего SQL-запроса.

   
 
 автор: Unkind   (29.06.2007 в 13:01)   письмо автору
 
   для: Trianon   (29.06.2007 в 12:31)
 

Да, все дело в LIMIT. Его можно ставить только в конце запроса, так что перед UNION не воткнешь...

   
 
 автор: cheops   (29.06.2007 в 15:36)   письмо автору
 
   для: Trianon   (29.06.2007 в 12:31)
 

Ровно это и имел в виду - будут учитываться ORDER BY и LIMIT только последнего запроса - все предыдущие конструкции от других запросов - будут игнорироваться.

   
 
 автор: Unkind   (29.06.2007 в 15:42)   письмо автору
 
   для: cheops   (29.06.2007 в 15:36)
 

Не то что игнорироваться. Такой запрос парсер MySQL не пропустит.

   
 
 автор: cheops   (29.06.2007 в 21:08)   письмо автору
 
   для: Unkind   (29.06.2007 в 15:42)
 

Раньше вроде обе конструкции пропускал, сейчас только LIMIT пропускается (с игнорированием). Помню, что-то там точно должно допускаться в использовании, но игнорироваться.

   
Rambler's Top100
вверх

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