Скрипт для создания базы данных магазинов, её таблиц и заполения таблиц данными - в файле по этой ссылке.
Пример 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. Использовать предикат SQL EXISTS. Пишем следующий запрос:
SELECT ProdName
FROM Solnyshko
AS name_soln
WHERE EXISTS (SELECT
ProdName FROM VETEROK WHERE
ProdName=name_soln.ProdName)
Результатом выполнения запроса будет та же таблица, что и в примере 1:
ProdName
|
хлеб
|
молоко
|
рыба
|
Аналогии между INTERSECT и EXISTS, EXCEPT и NOT EXISTS: более сложные примеры
Разность множеств: оператор SQL EXCEPT и его альтернативы
Разностью множеств A и B называется множество состоящее из всех тех и только тех элементов множества A, которые не являются элементами множества B. В частности, такое множество может состоять из продуктов, которые имеются в одном из магазинов, но отсутствуют в другом магазине.
Пример 3. Вывести список продуктов, которые имеются в мазазине Solnyshko, и отсутствуют в магазине Veterok. Пишем следующий запрос с использованием оператора SQL EXCEPT:
SELECT ProdName
FROM Solnyshko
EXCEPT
SELECT ProdName
FROM Veterok
Результатом выполнения запроса будет следующая таблица:
Во многих диалектах SQL, например, MySQL, оператор EXCEPT отсутствует. Наиболее простой альтернативный способ реализации разности множеств связан с использованием предиката EXISTS с отрицанием NOT, то есть NOT EXISTS. В качестве альтернативы им можно пользоваться и в MS SQL Server.
Пример 4. Вывести список продуктов, которые имеются в мазазине SOLNYSHKO, и отсутствуют в магазине VETEROK. Использовать предикат SQL NOT EXISTS. Пишем следующий запрос:
SELECT ProdName
FROM Solnyshko
AS name_soln
WHERE NOT EXISTS (SELECT
ProdName FROM Veterok WHERE
ProdName=name_soln.ProdName)
Do'stlaringiz bilan baham: |