У меня есть такая таблица:
params_detalis_users_xref
id
id_user
id_param
value_ot
value_do
Т.е. у меня количество параметров динамично и регулируется в админке. И есть также поиск по этим параметрам. Пример забитых данных:
Мне нужно проверить так, чтобы по обоим параметрам проверялось одновременно. Я немного ступил и сделал такой запрос:
SELECT id_user FROM params_detalis_users_xref WHERE (id_param='1' and value_ot<=200 and value_do>=297) AND (id_param='2' and value_ot<=300 and value_do>=320)
Такой запрос мне ничего не возвращает, т.к. я одновременно проверяю парметр id_param, который не может быть равным нескольким значениям. Но если я заменю AND на OR, то на первый взгляд будет всё работать, но если один из параметров не совпадёт, то он всёравно мне вернёт 34го юзера, хотя один из параметров поиска не подходит. Была такая мысль: сравнивать общее количество параметров, с количеством возвращённых одинаковых id юзера. Но это придётся делать запрос на общее количество параметров каждый раз, когда встречается новый id_user, а я хочу как можно меньше запросов. Прошу помощи у более опытных, пожалуйста:) Прошу прощения, если что-то не понятно написал, целый день работаю, уже плохо формулирую мысли:) Пожалуйста, если что-то не понятно, уточните.
Вы же знаете количество проверяемых параметров, когда генерируете запрос? Напишите OR и сравнивайте количество полученных строк с этим количеством. Видимо, ещё понадобится group by, так как подходящих пользователей может быть несколько:
SELECT id_user
FROM params_detalis_users_xref
WHERE (id_param='1' and value_ot<=200 and value_do>=297) OR
(id_param='2' and value_ot<=300 and value_do>=320)
GROUP BY id_user
HAVING count(id_param)=2
Попробуйте так, но не уверен насчет правильности конструкций.. Поправьте меня.
SELECT `id_user`,`value_ot`,`value_do` FROM `params_detalis_users_xref ` WHERE `id_param` IN (1,2) GROUP BY `id_user` HAVING `value_ot`<=300 AND `value_do`>=320
Сделай 1 запрос по id_param='1' и если получишь данные то гуд, нет делай второй запрос на id_param='2'
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости