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

Форум MySQL

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

 

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

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

тема: Запрос с лимитом, группировкой и рандомной сортировкой
 
 автор: NIK   (15.02.2011 в 01:06)   письмо автору
 
 

Есть таблица: id | type (ENUM(x,y) | value
Нужно выбрать 2 записи, первая с type = x, вторая с type = y и отсортировать их рандомно.

Пишу такой запрос
SELECT type, value FROM tbl WHERE type = 'x' OR type = 'y' GROUP BY type ORDER BY RAND()  LIMIT 2

но постоянно получаю одно и тоже значение поля value. Подскажите, как правильно составить такой запрос. В идеале был бы результат в виде одной строки, со столбцами type_x | type_y в которых были бы соответствующие значения.

  Ответить  
 
 автор: cheops   (15.02.2011 в 01:59)   письмо автору
 
   для: NIK   (15.02.2011 в 01:06)
 

С GROUP BY всегда так, он выберет вам первые значения (и всегда их будет выбирать), а при помощи ORDER BY RAND() вы только строки в результирующей таблице местами сможете менять, либо x первый, либо y. Сами значения не будут меняться. Попробуйте лучше самообъединение таблицы
SELECT a.type, a.value, b.type, b.value
FROM tbl AS a, tbl AS b
WHERE a.type = 'x' AND b.type = 'y'
ORDER BY RAND()
LIMIT 1

  Ответить  
 
 автор: NIK   (15.02.2011 в 14:59)   письмо автору
 
   для: cheops   (15.02.2011 в 01:59)
 

спасибо, то что доктор прописал!

скажите, а такую тонкость можно было найти в вашей "MySQL на примерах"? Не могу определиться между "MySQL 5. В подлиннике" и mysql в примерах, хочется подтянуть свои знания в составлении запросов.

  Ответить  
 
 автор: cheops   (15.02.2011 в 15:40)   письмо автору
 
   для: NIK   (15.02.2011 в 14:59)
 

Да, в обоих книгах примеры подобных запросов и их разбор можно найти. "MySQL 5. В подлиннике" больше подходит для чтения от начала до конца, из достоинств большой последовательный объем, из недостатков - не все нововведения MySQL 5 в ней описаны. В этом плане "MySQL на примерах" содержит больше нововведений MySQL 5, порядок изложения рецептурный (проблема - решение). Мы старались и тут охватить более или менее системно все особенности MySQL, но объем книги и охват вопросов в ней меньше чем в "MySQL 5. В подлиннике".

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

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