Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
производителями DLL01 и BRS01 товаров, цена которых $10 и выше. В следующей<br />
инструкции SELECT используется комбинация ключевых слов AND и OR для<br />
формулирования предложения WHERE:<br />
ВВОД<br />
SELECT prod_name, prod_price<br />
FROM Products<br />
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'<br />
AND prod_price > = 10;<br />
ВЫВОД<br />
prod_name<br />
prod_price<br />
Fish bean bag toy 3.4900<br />
Bird bean bag toy 3.4900<br />
Rabbit bean bag toy 3.4900<br />
18 inch teddy bear 11.9900<br />
Raggedy Ann 4.9900<br />
Анализ<br />
Взгляните на результат. В четырех возвращенных строках значатся цены ниже $10 —<br />
очевидно, строки не были отфильтрованы так, как надо. Что же произошло? Причина в<br />
порядке обработки. SQL (как и большинство других языков) вначале обрабатывает<br />
логические операторы AND, а потом уже логические операторы OR. Когда SQL “видит”<br />
такое предложение WHERE, он его считывает так: выбрать все продукты, которые<br />
стоят $10 и больше, изготовленные производителем BRS01, и все продукты,<br />
изготовленные производителем DLL01 независимо от их цены. Другими словами, так как<br />
приоритет у логического оператора AND выше, были объединены “не те” операторы.<br />
Решение этой проблемы состоит в использовании скобок для точного группирования<br />
необходимых логических операторов. Взгляните на следующий оператор SELECT и его<br />
выходные данные:<br />
ВВОД<br />
SELECT prod_name, prod_price<br />
FROM Products<br />
WHERE (vend_id = 'DLL01' OR vend_id = 'BRS0l')<br />
AND prod_price >= 10;<br />
ВЫВОД<br />
prod_name<br />
prod_price<br />
18 inch teddy bear 11.9900<br />
Анализ<br />
Единственным отличием между предыдущим выражением и этим являются скобки,<br />
в которые заключены первые два предложения оператора WHERE. Поскольку скобки<br />
имеют еще больший приоритет, чем логические операторы AND и OR, СУБД вначале<br />
обрабатывает условие OR внутри скобок. Соответственно, SQL-оператор будет<br />
пониматься так: выбрать все продукты, изготовленные либо производителем DLL01, либо<br />
производителем BRS01, которые стоят $10 и больше, а это именно то, что нужно.<br />
Использование скобок в предложениях WHERE<br />
Когда бы вы ни использовали предложения WHERE С ключевыми словами AND И OR, всегда<br />
вставляйте скобки, чтобы точно сгруппировать логические операторы. Не полагайтесь на