![]() |
|
Программирование >> 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 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |