Forum Webscript.Ru

Общие => Базы данных => Тема начата: NР от 11 Марта 2004, 16:25:40

Название: Сложный select
Отправлено: от 11 Марта 2004, 16:25:40
Всем привет!
Делаю поиск по базе на PHP и Mysql.
Поиск с несколькими условиями, но некоторые условия (судя по результатам) база упускает. В этом запросе результаты не учитывают условие (id_cat = \'241\') or (id_cat = \'240\')  or (id_cat = \'242\') or (id_cat = \'243\')
$query = "SELECT id, notice, price, name, descr_, picture, path, author, publishing  FROM `picture`  where  visible <>1 and (id_cat = \'241\') or (id_cat = \'240\')  or (id_cat = \'242\') or (id_cat = \'243\') and (name regexp \'$key_word\') or
                                    (author regexp \'$key_word\') or (format regexp \'$key_word\') or
                                     (descr regexp \'$key_word\') ORDER BY name LIMIT $first, 15";

Я не очень хорошо знаю синтаксис SQL, покопался в инете по таким запросам, но ничего н нашел.
Поэтому спрашиваю у вас, как правильно написать этот запрос:
Выбрать id, notice, price, name, descr_, picture, path, author, publishing из таблицы picture, где visible не равно ноль и (id_cat = 241 или id_cat = 240 или id_cat = 242 или id_cat = 243) и (name regexp \'$key_word\') or
                                    (author regexp \'$key_word\') or (format regexp \'$key_word\') or
                                     (descr regexp \'$key_word\')
Спасибо!
Название: Сложный select
Отправлено: MadDog от 11 Марта 2004, 16:47:59
Цитировать
:
(id_cat = \'241\') or (id_cat = \'240\') or (id_cat = \'242\') or (id_cat = \'243\')

Попробуй написать так:
((id_cat = \'241\') or (id_cat = \'240\') or (id_cat = \'242\') or (id_cat = \'243\'))
Цитировать
:
(name regexp \'$key_word\') or (author regexp \'$key_word\') or (format regexp \'$key_word\') or (descr regexp \'$key_word\')

ну и это соответсвенно тоже также
((name regexp \'$key_word\') or (author regexp \'$key_word\') or (format regexp \'$key_word\') or (descr regexp \'$key_word\'))
Название: Сложный select
Отправлено: Макс от 11 Марта 2004, 17:03:08
Цитировать
MadDog:
((id_cat = \'241\') or (id_cat = \'240\') or (id_cat = \'242\') or (id_cat = \'243\'))

id_cat IN (241, 240, 242, 243)
или
id_cat BETWEEN 240 AND 243
Название: Сложный select
Отправлено: от 11 Марта 2004, 17:27:07
MadDog
Помогло, спасибо!