Читаем SQL: быстрое погружение полностью

В этой главе мы применяли операторы только для выбора подмножества одного поля. Например, мы использовали оператор AND с оператором BETWEEN для фильтрации результатов поля Total с двумя различными числовыми значениями. Мы также можем применить операторы AND и OR для указания параметров нескольких полей. В приведенном ниже запросе оператор AND используется вместе с функцией DATE() для поиска всех счетов, оформленных после 02.01.2010, на общую сумму менее $3,00. Результат этого запроса должен удовлетворять одновременно обоим условиям: (DATE(InvoiceDate)>'2010-01-02'ANDTotal<3).

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

DATE(InvoiceDate) > '2010-01-02' AND Total < 3

ORDER BY

Total

Рис. 56

Из полученных результатов можно увидеть, что возвращаются только счета, оформленные после 2 января 2010 года, общая сумма которых составляет менее $3.

Примечание

Для поиска дополнительных параметров вы можете добавить дополнительные операторы AND. Как и в случае с оператором IN, можно не ограничиваться только двумя значениями.

Практические задания

• Найдите все счета, которые были выставлены в городе, название которого начинается с буквы P, а общая сумма превышает $2.

Оператор OR

Оператор OR позволяет найти записи, соответствующие любому из заданных вами условий. В следующем запросе выполняется поиск всех счетов, выставленных в городах, названия которых начинаются с буквы P или с буквы D.

Рис. 57

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

BillingCity LIKE 'p%' OR BillingCity LIKE 'd%'

ORDER BY

Total

Использование круглых скобок с операторами AND и OR для указания порядка операций

При написании в SQL более длинных условий WHERE, включающих несколько логических операторов, можно определить порядок выполнения операций аналогично правилам базовой арифметики. Возможно, вы встречали аббревиатуру PEMDAS (Parentheses, Exponents, Multiplication, Division, Addition, Subtraction — круглые скобки, экспоненты, умножение, деление, сложение, вычитание) или похожую BEMDAS (Brackets, Exponents, Multiplication, Division, Addition, Subtraction). Первая используется в США, вторая — в странах, где сильно влияние Великобритании. Если не встречали, то не стоит беспокоиться. Способ определения порядка операций очень простой. Но пока рассмотрим работу операторов AND и OR. Допустим, нам необходимо получить все счета на сумму свыше $1,98 из любых городов, названия которых начинаются с буквы P или D. Запрос будет выглядеть следующим образом:

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total > 1.98 AND BillingCity LIKE 'p%' OR

BillingCity LIKE 'd%'

ORDER BY

Total

Рис. 58

Когда данный запрос выполняется, браузер SQL сначала объединяет два условия по обе стороны от оператора AND, возвращая счета, общая сумма которых превышает $1,98, и названия городов, где они были выставлены, начинаются с буквы P. Затем отдельно обрабатывается условие справа от оператора OR, как если бы оператора AND не существовало. Другими словами, запрос сначала выполняет поиск результатов, где Total>1.98ANDBillingCityLIKE'p%'. Затем выполняется поиск всех результатов, где BillingCityLIKE'd%', а затем возвращаются результаты для обоих условий в порядке возрастания в поле Total.

Если вышеуказанный запрос вы ввели в свой браузер SQL, то заметите, что получены данные, соответствующие значению менее $1,98, но только для городов, начинающихся с буквы D.

Это связано с тем, что порядок операций SQL определен следующим образом: сначала обрабатывается оператор AND, а затем — оператор OR. Это не совсем так, как мы изначально хотели, но есть простой способ обрабатывать наш запрос именно так, как мы планировали, без необходимости прибегать к логическим операторам.

Примечание

В SQL порядок оператора AND соответствует порядку операции умножения, а оператора OR — операции сложения, если не добавлены круглые скобки. При отсутствии круглых скобок оператор AND будет обрабатываться по принципу, аналогичному арифметике: 3*2+1 равно 7, а 3*(2+1) равно 9.

При добавлении круглых скобок, как показано в примере ниже, браузер SQL сначала выполняет поиск данных, удовлетворяющих условиям внутри скобок: (BillingCityLIKE'p%'ORBillingCityLIKE'd%'). Затем только из этих записей, он ищет данные, общая сумма которых превышает $1,98 (Total>1.98).

SELECT

InvoiceDate,

BillingAddress,

BillingCity,

Total

FROM

invoices

WHERE

Total > 1.98 AND (BillingCity LIKE 'p%' OR

BillingCity LIKE 'd%')

ORDER BY

Total

Рис. 59

Теперь мы переписали запрос так, что все счета, сумма которых превышает $1,98, будут сформированы в городах, начинающихся либо с буквы P, либо с буквы D, что и требовалось изначально.

На мой взгляд,

Перейти на страницу:

Все книги серии Библиотека программиста

Программист-фанатик
Программист-фанатик

В этой книге вы не найдете описания конкретных технологий, алгоритмов и языков программирования — ценность ее не в этом. Она представляет собой сборник практических советов и рекомендаций, касающихся ситуаций, с которыми порой сталкивается любой разработчик: отсутствие мотивации, выбор приоритетов, психология программирования, отношения с руководством и коллегами и многие другие. Подобные знания обычно приходят лишь в результате многолетнего опыта реальной работы. По большому счету перед вами — ярко и увлекательно написанное руководство, которое поможет быстро сделать карьеру в индустрии разработки ПО любому, кто поставил себе такую цель. Конечно, опытные программисты могут найти некоторые идеи автора достаточно очевидными, но и для таких найдутся темы, которые позволят пересмотреть устоявшиеся взгляды и выйти на новый уровень мастерства. Для тех же, кто только в самом начале своего пути как разработчика, чтение данной книги, несомненно, откроет широчайшие перспективы. Издательство выражает благодарность Шувалову А. В. и Курышеву А. И. за помощь в работе над книгой.

Чед Фаулер

Программирование, программы, базы данных / Программирование / Книги по IT

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных