Программирование >>  Исключение дубликатов строк 

1 ... 63 64 65 [ 66 ] 67 68 69 ... 152


Показать студентов, имеющих средний балл 85 или выше по курсу Искусство , но не имеющих среднего балла 85 или выше по курсу Вычислительная техника .

Найти игроков в боулинг, которые имеют предварительный счет 155 или выше на Зандербирд Лэйнс, но не на Болеро Лэйнс .

Показать рецепты, содержащие говядину, но без чеснока .

Одним из ограничений использования чистой разности является то, что значения должны совпадать во всех столбцах каждого набора результатов. Это хорошо работает, если нужна разность двух или более множеств из одной и той же таблицы - например клиенты, которые заказали мотоциклы, и клиенты, которые заказали шлемы. Это также хорошо работает, когда нас интересует разность множеств из таблиц, имеюш,их подобные столбцы, например имена клиентов и имена сотрудников.

Однако во многих случаях желательно найти решения, которые требуют совпадения только нескольких значений столбцов из каждого набора. Для этого типа задач SQL предоставляет операцию OUTER JOIN, представляющую собой пересечение множеств значений ключей, которое включает несовпадающие значения из одного или из обоих множеств. Вот пример задач, которые можно решать с помощью OUTER JOIN.

Показать клиентов, которые не проо/сивают в том оюе городе, что и любой из сотрудников . (OUTER JOIN по имени города.)

Привести список заказчиков и эстрадных артистов, которых они не пригласили . (OUTER JOIN по номеру ангажемента.)

Найти агентов, не имеющих одинакового почтового индекса с любым из эстрадных артистов . (OUTER JOIN по почтовому индексу.)

Показать студентов, которые не имеют одинаковых имен с любым из преподавателей . (OUTER JOIN по имени.)

Найти игроков в боулинг, имеющих среднее количество очков 150 или выше, которые никогда не имели в игре меньше 125 очков (OUTER JOIN по идентификатору игрока из двух различных таблиц.)

Вывести на экран все компоненты для рецептов, в которых нет моркови . (OUTER JOIN по идентификатору рецепта.)

В главе 9 будет показано решение этих задач (и многих других) с использова нием OUTER JOIN, поскольку немногие коммерческие реализации SQL поддержи вают ЕХЕРТ.



Объединение

До сих пор обсуждался поиск элементов, которые являются общими в двух множествах (пересечение) и элементов, которые различаются между собой (разность). Третий тип операций с множествами вызывает сложение двух множеств (объединение).

Объединение в теории множеств

Объединение позволяет объединить два множества с подобной информацией в одно множество. Ученого может интересовать объединение двух множеств химических или физических выборочных данных. Например, ученый-химик, занимающийся исследованиями в области фармацевтики, может располагать двумя различными множествами соединений, которые оказывают определенное благоприятное воздействие. Химик может объединить эти два множества для получения общего списка всех действующих соединений.

Рассмотрим процесс объединения, исследуя два множества чисел. Первое множество чисел следующее:

1, 5, 8, 9, 32, 55, 78

Второе множество чисел:

3, 7, 8, 22, 55, 71, 99

Объединение этих двух множеств чисел составляют числа из обоих множеств, объединенные в одно новое множество:

1, 5, 8, 9, 32, 55, 78, 3, 7, 22, 71, 99

Значения, общие для обоих множеств (8 и 55), появляются в ответе только один раз. Последовательность чисел в наборе результатов не обязательно располагается в некотором конкретном порядке. Если в системе базы данных выполняется UNION, то возвращенные значения, не обязательно будут расположены последовательно, если явно не включено условие ORDER BY. В SQL можно также запросить U ALL, если вы хотите видеть двойные элементы.

Элементами каждого множества не обязательно должны быть только одиночные значения. Скорее всего, при работе с SQL вы будете сталкиваться с множествами строк.

Чтобы можно было объединить два или более множеств сложных элементов, все элементы в каждом из объединяемых множеств должны иметь одинаковое количество и тип атрибутов. Предположим, имеется сложное множество, в котором каждая строка представляет элемент множества (рецепт тушеного мяса), а каждый столбец обозначает конкретный атрибут (компонент рецепта).



Картофель

Вода

Мясо

молодого барашка

Горошек

Куриный бульон

Курица

Морковь

11аста

Вода

Тофу

Молодой горошек в стручках

Картофель

Бульон

из говядины

Говядина

Капуста

11аста

Вода

Свинина

г множество выглядит так:

Картофель

Вода

Мясо

молодого барашка

Куриный бульон

Индюнгатина

Морковь

11аста

Отвар из ово1И,ей

Тофу

Молодой горошек в стручках

Картофель

Бульон

из говядины

Говядина

Капуста

Бобы

Вода

Свинина

Объединение этих двух множеств представляет собой множество объектов из обоих множеств; повторяюи;иеся строки исключаются:

Картофель Вода

Мясо

молодого барашка

Горошек

Куриный бульон Курица

Морковь

Паста

Вода

Тофу

Молодой горошек в стручках

Картофель

Бульон

из говядины

Говядина

Капуста

Паста

Вода

Свинина

Картофель Вода

Мясо

молодого барашка

Куриный бульон Индюшатина

Морковь

Паста

Отвар из овощей

Тофу

Молодой горошек в стручках

Бобы

Вода

Свинина

Объединение поборов результотов с использовонием UNION

Между множествами сложных объектов и строками наборов результатов совсем небольшое различие. При работе со строками множества данных, извлеченных



1 ... 63 64 65 [ 66 ] 67 68 69 ... 152

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика