Предложение с двойным И где и между датами - PullRequest
0 голосов
/ 08 мая 2020

В настоящее время у меня есть такой запрос

WHERE Category = 'Freezing' OR Category ='Ooredoo FTTH fault'OR Category ='Ooredoo TT fault ' OR Category ='No Picture'

, но я хочу использовать этот поисковый запрос по дате с приведенным выше кодом, я могу использовать любой 1 из этого кода, но я не могу использовать оба запроса, я использовали «И» или «ИЛИ», но это не работает,

ScheduleDate BETWEEN '".$_POST["from_date"]."' AND '".$_POST["to_date"]."'  ```

1 Ответ

2 голосов
/ 08 мая 2020

a or b or c and d неоднозначно. Вам нужно использовать круглые скобки, чтобы было ясно, как сгруппировать и и или. Если вы хотите, чтобы category соответствовал ЛЮБОМУ из вариантов, И расписание находится между определенными датами. (a or b or c) and d.

where (
    Category = 'Freezing' or
    Category = 'Ooredoo FTTH fault' or
    Category = 'Ooredoo TT fault ' or
    Category = 'No Picture'
  )
  and ScheduleDate BETWEEN ? AND ?

(Примечание: не используйте конкатенацию строк для ввода значений в запросы, особенно не напрямую из пользовательского ввода. Это дыра в безопасности и может вызвать ошибки. Используйте параметры привязки .)

(Примечание: у вас есть лишний пробел в одном из ваших параметров.)

Вы также можете использовать in, чтобы упростить запрос.

where
  Category in (
    'Freezing', 'Ooredoo FTTH fault', 'Ooredoo TT fault', 'No Picture'
  )
  and ScheduleDate BETWEEN ? AND ?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...