Почему sql игнорирует мое предложение? - PullRequest
0 голосов
/ 15 мая 2018

Я делаю фильтр для бизнеса в сфере недвижимости.У них есть несколько свойств и фильтров для получения их при получении клиентом.

У меня возникла проблема, когда после различных операций OR Mysql игнорирует предложения, детализированные после этого OR.

SELECT * FROM props WHERE tipo = 'Casas_Casa' OR tipo = 'Departamentos_Duplex' OR tipo = 'Casas_Chalet' OR tipo = 'Casas Condominio' OR tipo = 'Countries y Barrios cerrados_Casas' OR tipo = 'Countries y Barrios cerrados_Casas' OR tipo = 'PH' AND operacion = 'Alquiler' ORDER BY modif DESC

Mysqlотвечает всем OR, но не распознает значение 'operacion', но упорядочивает их.

1 Ответ

0 голосов
/ 15 мая 2018

Причина этого в том, что AND имеет более высокий приоритет, чем OR, поэтому часть условия AND operacion = 'Alquiler' "привязана" только к ограничению 'PH'.

Добавьте круглые скобки вустановить правильный приоритет:

SELECT *
FROM props
WHERE (tipo = 'Casas_Casa'
    OR tipo = 'Departamentos_Duplex'
    OR tipo = 'Casas_Chalet'
    OR tipo = 'Casas Condominio'
    OR tipo = 'Countries y Barrios cerrados_Casas'
    OR tipo = 'Countries y Barrios cerrados_Casas'
    OR tipo = 'PH')
AND operacion = 'Alquiler'
ORDER BY modif DESC

Вы также можете использовать выражение IN, чтобы упростить ваше условие:

SELECT *
FROM props
WHERE tipo IN (
    'Casas_Casa'
,   'Departamentos_Duplex'
,   'Casas_Chalet'
,   'Casas Condominio'
,   'Countries y Barrios cerrados_Casas'
,   'Countries y Barrios cerrados_Casas'
,   'PH')
AND operacion = 'Alquiler'
ORDER BY modif DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...