показать результаты, если оно соответствует какому-либо из условий? - PullRequest
0 голосов
/ 28 марта 2012

Это сводит меня с ума.Я проверяю 3 условия в моем запросе sql.Если какой-либо из них совпадает, я хочу получить результат campaign_id:

SELECT `campaign_id` FROM `tracking` 
WHERE `user` = 'username@domain.net' AND `attempts` > '5' 
    AND `clicked` > '0' AND `shared` > '0'

Из того, что я могу сказать, сейчас это работает так, как будто он должен соответствовать ВСЕМ условиямКак я могу сделать так, чтобы он показывал результаты campaign_id, если он соответствует ЛЮБОМ условий?

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

Измените AND на OR. Но только для частей, которые вы хотите OR, используя скобки

SELECT `campaign_id` FROM `tracking` 
WHERE `user` = 'username@domain.net' AND (`attempts` > '5' 
    OR `clicked` > '0' OR `shared` > '0')

По сути, вы хотите, чтобы указанный пользователь AND любой из этих других фильтров, которые сгруппированы с использованием внутреннего OR s

2 голосов
/ 28 марта 2012

Если вы хотите использовать ЛЮБОЙ, а не ВСЕ, вам нужно заменить операторы И на операторы ИЛИ.Если вам нужно смешать AND и OR, убедитесь, что вы правильно выбрали приоритет;самый простой способ сделать это - заключить соответствующие условия в круглые скобки.Например, если вы всегда хотите сопоставить пользователя и любые другие условия, тогда

SELECT `campaign_id` 
FROM `tracking` 
WHERE `user` = 'username@domain.net' 
  AND (   `attempts` > '5' 
       OR `clicked` > '0' 
       OR `shared` > '0'
      )
0 голосов
/ 28 марта 2012

Если вы хотите ограничить либо attempts, clicked, либо shared при работе с конкретным пользователем, выполните что-то вроде:

SELECT `campaign_id` 
FROM `tracking` 
WHERE `user` = 'username@domain.net' 
    AND (`attempts` > '5' 
    OR `clicked` > '0' 
    OR `shared` > '0')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...