Автор Тема: Сложный select  (Прочитано 3151 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 53
  • +0/-0
  • 0
    • Просмотр профиля
    • http://rta.rikt.ru
Сложный 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\')
Спасибо!
Чайник - он и в Африке чайник (это про меня :))

Оффлайн MadDog

  • Главный Металликолог
  • Ветеран
  • *****
  • Сообщений: 679
  • +0/-0
  • 2
    • Просмотр профиля
Сложный select
« Ответ #1 : 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\'))
So let it be written
So let it be done I\'m creeping death

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Сложный select
« Ответ #2 : 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
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 53
  • +0/-0
  • 0
    • Просмотр профиля
    • http://rta.rikt.ru
Сложный select
« Ответ #3 : 11 Марта 2004, 17:27:07 »
MadDog
Помогло, спасибо!
Чайник - он и в Африке чайник (это про меня :))

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28