Цепные запросы - Не удается заставить И / ИЛИ работать - PullRequest
1 голос
/ 20 декабря 2010

После анализа моей проблемы, я думаю, что мне может понадобиться использовать оператор "union" в SQL, однако я не уверен.В любом случае, я выстраиваю свои запросы в codeigniter, чтобы получить этот запрос:

SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND `host` = 'amazon'
OR `host` = 'zappos'
OR `host` = 'newegg'
ORDER BY `time` desc 

Поэтому он выбирает вещи, которых нет в книгах категорий, но они принадлежат этим хостам.Так что я хочу сделать так, чтобы он возвращал только результаты в книгах, И есть множество из этих трех.Я бы предпочел сделать это с запросом к базе данных, а не вручную после фильтрации.Я использую MySQL с таблицей innoDB.Спасибо

Ответы [ 2 ]

10 голосов
/ 20 декабря 2010

Используйте скобки, чтобы все работало как нужно.

SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND ( `host` = 'amazon'
OR `host` = 'zappos'
OR `host` = 'newegg' )
ORDER BY `time` desc

Или используйте ключевое слово IN:

SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND `host` IN ( 'amazon', 'zappos', 'newegg' )
ORDER BY `time` desc
0 голосов
/ 20 декабря 2010

Попробуйте несколько скобок:

SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND ( 
`host` = 'amazon'
OR `host` = 'zappos'
OR `host` = 'newegg'
)
ORDER BY `time` desc 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...