У меня есть такая таблица:
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'
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть база данных с картинками и текстом, как сделать так чтобы все данные из базы записались в xml файл, с помощью php скрипта может быть?...