проблема с запросом SELECT

RigVan

Постоянный член клуба
проблема с запросом SELECT

Не пойму, что за ошибка в синтаксисе. Есть два почти одинаковых запроса, вот первый (не рабочий):
$query = "select
col1,
col2,
col3,
date
from table
where col1 ='Солнце' or col1='Воздух' or col1='Вода' and
col2 between 5 and 12
and date >=20050101
ORDER BY col3
LIMIT 0,24";

Этот запрос почему-то неправильно выбирает даты, т.е попадаются и такие как "20040729", что по идее не должно удовлетворять условию "date >=20050101"

а вот второй, который работает абсолютно нормально:
$query = "select
col1,
col2,
col3,
date
from table
where col2 between 5 and 12
and date >=20050101
ORDER BY col3
LIMIT 0,24";

Как видно разница в них в том, что во втором запросе нет выборки по первой колонке. При этом он выдаёт правильные даты.

В чем может быть загвоздка? Спецы помогите! Очень надеюсь на помощь Фаната!
 

Кром

Новичок
Загвоздка в том, что есть такое понятие, как приоритет операторов. Это, по-моему, во втором классе проходят. В случае недостаточного их знания в данной предметной области (базы данных), лучше все таки использовать круглые скобки.
 

RigVan

Постоянный член клуба
Я извеняюсь за глурый вопрос, но где их нужно поставить?

-~{}~ 15.12.05 03:47:

Все понял.... :) Торможу чего-то, наверное спать пора.... Спасибо за помощь. Тему можно закрыть.
 

Кром

Новичок
>но где их нужно поставить?

Их нужно поставить там, внимание, где ТЕБЕ нужно. Я понятно изьясняюсь?
Только из любви к прекрасному могу дать совет:
(col1 ='Солнце' or col1='Воздух' or col1='Вода') and
(col2 between 5 and 12) and
(date >=20050101)

-~{}~ 15.12.05 02:48:

Понял, вот и хорошо. :)
 
Сверху