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

1 ... 61 62 63 [ 64 ] 65 66 67 ... 152


Привести список эстрадных артистов, которые отыграли ангажементы для клиентов Бонниксен и Росалес .

Показать студентов, имеющих средний балл 85 или выше

по курсу Искусство , и тех, кто также имеет средний балл 85

или выше по курсу Вычислительная техника .

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

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

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

Показать клиентов и сотрудников, проэтвающих в одном городе . (JOIN по названию города.)

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

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

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

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

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

В следуюпдей главе мы покажем решение этих задач (и многих других) с использованием JOIN, поскольку совсем немного коммерческих реализаций SQL поддерживают INTERSECT.

Разность

Чему равна разность 21 и 10? Если ответ 11, то вы на верном пути! В операции разности (иногда также называемой вычитанием, минусованием или исключением) берется одно множество значений и из него удаляется множество значений другого



множества. То, что остается, является множеством значений первого множества, которые отсутствуют во втором множестве. EXCEPT является ключевым с/ю-вом, используемым в стандарте SQL.

Разность й теории множеств

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

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

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

Второе множество такое:

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

Разностью первого и второго множества чисел являются числа, которые имеются в первом множестве, но отсутствуют во втором. Ответ:

1, 5, 9, 32, 78

Эту операцию разности можно перевернуть. Тогда разностью второго и первого множества будет:

3, 7, 22, 71, 99

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

Когда элемент множества является чем-то более сложным, чем просто отдельное число или значение, каждый элемент множества имеет несколько атрибутов (битов информации, которые описывают свойства каждого из элементов). Например, ваш любимый рецепт тушеного мяса является сложным элементом множества всех рецептов, которые содержат много различных компонентов. Можно рассматривать каждый компонент как атрибут сложного элемента - рецепта тушеного мяса.

Чтобы найти разность двух множеств, состоящих из сложных элементов, необходимо найти элементы во втором множестве, которые совпадают по всем атрибутам, с элементами первого множества. Не забывайте, что все элементы в каждом



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

Картос

зель

Вода

Мясо

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

Гороптек

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

Курица

Морковь

11аста

Вода

Тофу

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

Картос

зель

Бульон

из говядины

Говядина

Капуста

11аста

Вода

Свинина

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

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

Мясо

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

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

Морковь

Паста

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

Тофу

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

Картофель

Бульон

из говядины

Говядина

Капуста

Бобы

Вода

Свинина

Разностью этих двух множеств являются объекты в первом множестве, которые отсутствуют во втором множестве:

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

Мясо

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

Горошек

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

Морковь

Паста

Вода

Тофу

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

Паста

Вода

Свинина

Разность наборов результатов

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



1 ... 61 62 63 [ 64 ] 65 66 67 ... 152

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