Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Составить запрос к mysql 
:(
    Опции темы
Crusaderr
Дата 13.11.2010, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



Всем привет!

Посоветуйте пожалуйста, можно ли составить запрос к БД (mysql), или это придется разбить на несколько запросов?

Задача такая:

Есть таблица, в ней записи, у каждой записи есть поле с её коэффициентом.
Всего нужно выбрать N записей, из них должно быть X записей с максимальным коэффициентом, Y с ненулевым коэффициентом, остальные (до лимита N) -- любые, кроме выбранных выше. При этом, нужно учесть что коэффициент может быть нулевой у всех записей таблицы.
Можно ли это вставить в 1 запрос или придется писать 3 запроса, в каждом из которых исключать результаты предыдущих?
PM MAIL WWW ICQ Jabber   Вверх
Crusaderr
Дата 14.11.2010, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



запрос получается примерно такой:
Код

(SELECT * FROM `table` WHERE 1 ORDER BY `koef` DESC LIMIT 2) UNION (SELECT * FROM `table` WHERE `koef`>0 ORDER BY RAND() LIMIT 3) UNION (SELECT * from `table` ORDER BY RAND() LIMIT 5)

так работает.
но мне нужно чтобы выводилось (в данном случае) НЕ МЕНЕЕ  2+3+5=10 записей, а если находятся повторы то запрос их режет..

Это сообщение отредактировал(а) Crusaderr - 14.11.2010, 00:47
PM MAIL WWW ICQ Jabber   Вверх
Crusaderr
Дата 14.11.2010, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 4.10.2007

Репутация: нет
Всего: нет



относительно разобрался:
Код

(SELECT * FROM `table` WHERE 1 ORDER BY `koef` DESC LIMIT 2) UNION (SELECT * FROM `table` WHERE `koef`>0 ORDER BY RAND() LIMIT 3) UNION (SELECT * from `table` ORDER BY RAND())  LIMIT 10

так, вроде бы, если количество данных позволяет, получаем все 10 записей
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.