Mysql запрос дает неверные данные - PullRequest
0 голосов
/ 30 августа 2018
select * from stock where product_name like '".$searchType."%' or product_brand like '".$searchType."%' or type like '".$searchType."%' and (price between ".$min_price." and ".$max_price.") group by product_name

У меня есть таблица с именем stock, где у меня есть столбец product_name, product_brand, type и price. Теперь у меня есть ползунок ценового диапазона, где он работает только для type, но не работает для product_name и product_brand. Например.

Когда я перемещаю ползунок цены, и его диапазон достигает 200–500, и выбираю type, тогда он показывает результат, если type не находится в диапазоне, он показывает result not found. Но в случае product_name и product_brand он всегда показывает данные, пока он находится в ценовом диапазоне или нет.

Итак, как я могу исправить эту проблему? Пожалуйста, помогите мне.

Thnak You

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Запрос, который вы создали, имеет много циклов. Вот почему результаты перегружены. Я не могу дать точное решение, потому что база данных не со мной. Но попробуйте использовать левое соединение и уменьшить количество циклов.

0 голосов
/ 30 августа 2018

Вам нужно будет сгруппировать условия ИЛИ в вашем SELECT, иначе, как только один из них совпадет, он прекратит проверку любых других условий ...

select * 
  from stock where ( product_name like '".$searchType."%' or 
      product_brand like '".$searchType."%' or 
      type like '".$searchType."%') and 
     (price between ".$min_price." and ".$max_price.") 
  group by product_name

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...