SELECT ИМЕНА_СТОЛБЦОВ (1..N)
FROM ИМЯ_ТАБЛИЦЫ
INTERSECT
SELECT ИМЕНА_СТОЛБЦОВ (1..N)
FROM ИМЯ_ТАБЛИЦЫ
Оператор EXCEPT имеет следующий синтаксис:
SELECT ИМЕНА_СТОЛБЦОВ (1..N)
FROM ИМЯ_ТАБЛИЦЫ
EXCEPT
SELECT ИМЕНА_СТОЛБЦОВ (1..N)
FROM ИМЯ_ТАБЛИЦЫ
В этой конструкции единичные запросы могут иметь условия в секции WHERE, а могут не иметь их. При помощи операторов INTERSECT и EXCEPT можно производить операции с запросами как к одной таблице, так и к разным.
В примерах работаем с базой данных сети магазинов и таблицами SOLNYSHKO и VETEROK, содержащими данные о продуктах, которые имеются в магазинах с соответствующими названиями. Таблица SOLNYSHKO:
Prod_ID
|
ProdName
|
Maker
|
Quantity
|
1
|
хлеб
|
AB
|
100
|
2
|
молоко
|
CD
|
65
|
3
|
мясо
|
EF
|
75
|
4
|
рыба
|
GH
|
60
|
5
|
сахар
|
IJ
|
45
|
Таблица VETEROK:
Prod_ID
|
ProdName
|
Maker
|
Quantity
|
1
|
хлеб
|
QW
|
85
|
2
|
молоко
|
LD
|
70
|
3
|
сыр
|
MV
|
45
|
4
|
масло
|
DG
|
62
|
5
|
рыба
|
LN
|
55
|
Пересечением множеств A и B называется множество, состоящее из всех тех или только тех элементов, которые принадлежат каждому из множеств A и B. Больше об операциях над множествами как над математическими объектами можно узнать из урока Множества и операции над множествами. Пересечениями множеств могут служить носители одних и тех же имен в двух студенческих группах, овощи одних и тех же наименований в двух корзинах и другие. Пересечением множеств является, наконец, набор товаров, которые имеются и в одном, и в другом магазинах.
Пример 1. Вывести список продуктов, которые имеются и в магазине Solnyshko, и в магазине Veterok. Пишем следующий запрос с использованием оператора SQL INTERSECT:
SELECT ProdName
FROM Solnyshko
INTERSECT
SELECT ProdName
FROM Veterok
Результатом выполнения запроса будет следующая таблица:
ProdName
|
хлеб
|
молоко
|
рыба
|
Во многих диалектах SQL, например, MySQL, оператор INTERSECT отсутствует. Но реализация операции пересечения множеств возможна другими способами. Наиболее простой способ связан с использованием предиката EXISTS. В качестве альтернативы им можно пользоваться и в MS SQL Server.
Пример 2. Вывести список продуктов, которые имеются и в мазазине Solnyshko, и в магазине Veterok. Пишем следующий запрос:
SELECT ProdName
FROM Solnyshko
AS name_soln
WHERE EXISTS (SELECT
ProdName FROM VETEROK WHERE
ProdName=name_soln.ProdName)
Результатом выполнения запроса будет та же таблица, что и в примере 1:
ProdName
|
хлеб
|
молоко
|
рыба
|
Разностью множеств A и B называется множество состоящее из всех тех и только тех элементов множества A, которые не являются элементами множества B. В частности, такое множество может состоять из продуктов, которые имеются в одном из магазинов, но отсутствуют в другом магазине.
Пример 3. Вывести список продуктов, которые имеются в магазине Solnyshko, и отсутствуют в магазине Veterok. Пишем следующий запрос с использованием оператора EXCEPT:
Do'stlaringiz bilan baham: |