MySQL SELECT-запрос с ИЛИ и скобками не работает - PullRequest
0 голосов
/ 17 марта 2019

Привет У меня есть запрос MySQL Select, как указано ниже.

SELECT * 
FROM request
WHERE user_id=$user_id 
   OR vendor=$user_id
   OR (status='' AND services IN ( $service_arr )) 
ORDER BY id DESC

Но этот запрос не работает должным образом.Мое условие ИЛИ игнорируется, и этот запрос получает данные, только если условия в скобках выполняются.Это означает, что он получает только те строки, в которых имя столбца services содержит один из элементов, представленных в $service_arr.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

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

http://sqlfiddle.com/#!9/282e9f/2

CREATE TABLE IF NOT EXISTS `request` (
  `user_id` int(6) unsigned NOT NULL,
  `vendor` int(3) unsigned NOT NULL,
  `status` varchar(200) NOT NULL,
  `services` varchar(200) NOT NULL

) DEFAULT CHARSET=utf8;
INSERT INTO `request` (`user_id`, `vendor`, `status`, `services`) VALUES
  ('1', '1', 'cut','fit'),
   ('2', '1', 'cut','fit'), ('3', '3', '','pick'),
    ('4', '5', 'next','sample');
SELECT * 
FROM request
WHERE user_id=1
   OR vendor=1
   OR (status='' AND services IN ('pick'));

Результирующий набор

user_id vendor  status  services
1        1       cut         fit
2        1       cut         fit
3        3                   pick

Я не могу найти что-то не так с вашим SQL, можете поделиться примером с данными?

0 голосов
/ 17 марта 2019

Этот пример, скорее всего, поможет вам

SELECT customer_id,first_name, last_name 
FROM customers 
WHERE (last_name = 'atiq')
   OR (last_name = 'hamza' AND state = 'attock')
   OR (last_name = 'usman' AND status = 'Active' AND state = 'islamabad');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...