немогу разобраться с запросом

-faqer-

Я только учусь
немогу разобраться с запросом

Я понимаю что он посути очень простой, НО
Есть таблица в которой хранятся сообщения
У каждого сообщения в поле section с типом данных int хранится идентификатор категории в поле message собсно само сообщение
Если я хочу найти все сообщения, относящиеся к категориям допустим 1,2,5,18, в которых есть XXX
Как мне формировать запрос
SELECT * FROM table WHERE section = 1 OR section = 2 OR section = 5 OR section = 18 AND message LIKE %XXX%
Ничего больше мне в голову не приходит
 

Demiurg

Guest
строковые константы беруться в кавычки.
 

-faqer-

Я только учусь
В смысле так
SELECT * FROM table WHERE `section` = 1 OR `section` = 2 OR `section` = 5 OR `section` = 18 AND `message` LIKE '%XXX%'
Все равно не то
Какой то бред у меня получается
допустим есть такие сообщения
4|aaa191bb
6|bb191
12|191aaa
13|bb
Делаем запрос
PHP:
WHERE `section` = 4 OR `section` = 6 OR `section` = 12 OR `section` = 13 AND `message` LIKE '%BB%'
выводит все 4
Делаем запрос
PHP:
WHERE `section` = 4 OR `section` = 6 OR `section` = 12 OR `section` = 13 AND `message` LIKE '%191%'
выводит 4, 6 и 12
Делаем запрос
PHP:
WHERE `section` = 4 OR `section` = 6 OR `section` = 12 OR `section` = 13 AND `message` LIKE '%AAa%'
выводит опять 4, 6 и 12
Бредятина какая-то
Что за х..... вот тут в форуме, то что выделило красным цветом я писал маленькими буквами и aaa bb какого черта регистр меняется
 

lyu

Guest
Надо так

SELECT * FROM table
WHERE section IN (1,2,5,18) AND message LIKE '%xxx%'
 

Апельсин

Оранжевое создание
-faqer-
оно все правильно выводит :)

хочешь по другому - расставь скобки :)
 

-faqer-

Я только учусь
lyu
Спасибо, то, что доктор прописал
А почему тогда траблы с таким запросом
Хочу найти все сообщения старше хх дней
PHP:
WHERE `datetime` < subdate(now(), interval хх day)
Все работает, если хх попадает в промежуток от 1 до 44 дней дальше не работает
 

lyu

Guest
Попробуй так

WHERE datetime < ( NOW() - INTERVAL xx DAY )

datetime у тебя долже быть типа DATETIME, DATE или TIMESTAMP
иначе MySQL может неправильно сравнивать
 

-faqer-

Я только учусь
Спасибо
Но вобщем-то и тот работал,
я просто косяка упорол
Еще раз спасибо
 
Сверху