Когда использовать OR, И в MYSQL для результатов расширенного поиска - PullRequest
0 голосов
/ 25 января 2012

Я пытаюсь создать опцию расширенного поиска для нашего сайта.У меня проблемы с тем, чтобы заставить это работать?По сути, единственное, что должно быть постоянным, это ' review_live = 1 ', остальное только в том случае, если пользователь ищет его.Почему это не работает правильно, может быть, я не использую ИЛИ И правильно в более длинных запросах ...

    WHERE 
    review_live = 1 AND
    city LIKE '%$location%' OR 
    region LIKE '%$region%' OR 
    date BETWEEN '$beginDate' AND '$endDate' OR
    name LIKE '%$name2%' OR
    type LIKE '%$type1%' OR 
    type_2 LIKE '%$type2%' 
    ORDER BY date DESC

Ответы [ 2 ]

5 голосов
/ 25 января 2012

первое предложение:

WHERE 
review_live = 1 AND 
(
  city LIKE '%$location%' OR
  region LIKE '%$region%' OR 
  ( date BETWEEN '$beginDate' AND '$endDate' ) OR
  name LIKE '%$name2%' OR
  type LIKE '%$type1%' OR
  type_2 LIKE '%$type2%' 
)
ORDER BY date DESC

EDIT:

Я предполагаю, что вы замените все свои строки like на '%', если пользователь не хочет фильтровать этот критерий. Тогда попробуйте это:

WHERE 
review_live = 1 AND 
city LIKE '%$location%' AND 
region LIKE '%$region%' AND 
date BETWEEN '$beginDate' AND '$endDate' AND
name LIKE '%$name2%' AND
type LIKE '%$type1%' AND
type_2 LIKE '%$type2%'
ORDER BY date DESC
0 голосов
/ 25 января 2012

Вы хотите, чтобы review_live = 1 И все остальное. Все остальное - город или область, или ...

WHERE review_live = 1 AND (...) ЗАКАЗАТЬ по дате DESC

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