|
Программирование >> Sql: полное руководство
Однако если в запросы на объединения входят как операции union, так и операции union all, то порядок следования этих инструкций имеет значение. Если выражение д ONION ALL В UNION С проинтерпретировать как А ONION ALL (В UNION С) то оно вернет десять строк (шесть из внутренней инструкции плюс четыре строки из таблицы А). Однако если его проинтерпретировать как (А UNION ALL В) UNION С то оно вернет только четыре строки, поскольку внешняя операция union удалит все повторяюшиеся строки По эгой причине всегда необходимо использовать круглые скобки, чтобы указать последовательность выполнения в запросах на объединение, содержащих три или более операций union. Резюме Данная глава является первой из четырех глав, посвященных SQL-запросам на выборку. В ней были рассмотрены: Инструкция select, используемая для формирования запроса на выборку данных Каждая инструкция select возвращает таблицу результатов запроса, содержащую один или более столбцов и ноль или более строк Предложение from, определяющее таблицы, в которых содержатся требуемые данные. Предложение select, определяющее столбцы данных, которые необходимо включить в результаты запроса и которые могут представлять собой столбцы из базы данных или вычисляемые столбцы. Предложение where, отбирающее строки, которые необходимо включить в результаты запроса путем применения условия отбора к строкам базы данных Условия отбора, которые позволяют выбирать строки путем сравнения значений, проверки значений на принадлежность множеству или диапазону значений, проверки на соответствие шаблону символов и проверки на равенство значению null. Простые условия отбора, которые можно объединять в более сложные условия с помощью операторов and, or и not. Предложение order by, которое определяет, что результаты запроса следует сортировать по возрастанию или убыванию на основании значений в одном или нескольких столбцах. Операция un i on, которую можно использовать для объединения результатов двух инструкций select. Tf 1Э Многотабличные запросы на выборку (объединения) На практике многие запросы считывают информацию сразу из нескольких таблиц базы данных. Например, приведенные ниже запросы к учебной базе данных извлекают данные из двух, трех или четырех таблиц. Вывести список служащих и офисов, в которых они работают (таблицы sales- reps и offices). Вывести список заказов, сделанных на прошлой неделе, включая следующую информацию: стоимость заказа, имя клиента, сделавшего заказ, и описание заказанного товара (таблицы orders, customers и products) Показать все заказы, принятые в восточном регионе, в том числе описания товаров и имена служащих, принявших заказы (таблицы orders, salesreps, offices и products). SQL позволяет получить ответы на эти запросы посредством многотабличных запросов, которые объединяют данные из нескольких таблиц. В настоящей главе рассматриваются такие запросы и имеющиеся в SQL средства объединения. Пример двухтабличного запроса Чтобы понять, как в SQL реализуются многотабличные запросы, лучше всего начать с рассмотрения простого запроса, который объединяет данные из двух различных таблиц. Вывести список всех заказов, включая номер и стоимость заказа, а также имя и лимит кредита клиента, сделавшего заказ. Из рис. 7 1 видно, что четыре запрашиваемых элемента данных хранятся в двух различных таблицах: В таблице orders содержится номер и стоимость каждого заказа, но в ней отсутствуют имена клиентов и лимиты предоставленных им кредитов. В таблице customers содержатся имена клиентов и данные о состоянии их счетов, но в ней нет информации о заказах Однако между двумя этими таблицами существует связь. В каждой строке столбца cust таблицы orders содержится идентификатор клиента, сделавшего заказ, соответствующий значению одной из строк столбца cust num таблицы customers. Очевидно, чтобы получить требуемые результаты, в инструкции select, с помощью которой осуществляется запрос, необходимо как-то учесть эту связь между таблицами. Прежде чем рассматривать инструкцию select, выполняющую этот запрос, будет полезно обдумать, как бы вы выполнили этот запрос вручную с помощью карандаша и бумаги. На рис. 7.2 изображены действия, которые предположительно придется выполнить: 1. Сначала нарисуйте таблицу для результатов запроса, содержащую четыре столбца, и запишите имена столбцов. Затем перейдите к таблице orders и начните с первого заказа 2 Найдите в строке для первого заказа его номер (112961) и стоимость ($31,500 00), а затем перепишите оба значения в первую строку таблицы результатов 3 В строке для первого заказа найдите идентификатор клиента, сделавшего заказ (2117) Перейдите к таблице customers и в столбце cust num найдите строку с идентификатором клиента 2117.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |