Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

INTERSECT и MINUS

Команда UNION, как вы уже видели в Главе 14, может объединить два запроса, объединив их вывод в один. Два других обычно имеющихся способа объединения отдельных запросов - это INTERSECT(Плюс) и MINUS(Минус). INTERSECT выводит только строки, произведенные обоими перекрестными запросами, в то врем как MINUS выводит строки которые производятся одним запросом, но не другим. Следовательно , следующие два запроса

SELECT * FROM Salespeople WHERE city = 'London' INTERSECT SELECT * FROM Salespeople WHERE 'London' IN (SELECT city FROM Customers WHERE Customers.snum = Salespeople.snum);

выведут строки произведенные обоими запросами, производящими всех продавцов в Лондоне которые имели по крайней мере одного заказчика размещенного там также. С другой стороны , запрос

SELECT * FROM Salespeople WHERE city = 'London' MINUS SELECT * FROM Salespeople WHERE 'London' IN (SELECT sity FROM Customers WHERE Customers.snum = Salespeople.snum);

удалит строки выбранные вторым запросом из вывода первого, и таким образом будут выведены все продавцы в Лондоне, которые не имели там заказчиков. MINUS иногда еще называют DIFFERENCE (ОТЛИЧИЕ)