Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Составить запрос к mysql


Автор: Crusaderr 13.11.2010, 23:12
Всем привет!

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

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

Есть таблица, в ней записи, у каждой записи есть поле с её коэффициентом.
Всего нужно выбрать N записей, из них должно быть X записей с максимальным коэффициентом, Y с ненулевым коэффициентом, остальные (до лимита N) -- любые, кроме выбранных выше. При этом, нужно учесть что коэффициент может быть нулевой у всех записей таблицы.
Можно ли это вставить в 1 запрос или придется писать 3 запроса, в каждом из которых исключать результаты предыдущих?

Автор: Crusaderr 14.11.2010, 00:37
запрос получается примерно такой:
Код

(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, 01:05
относительно разобрался:
Код

(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 записей

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)