Главная » Программирование » Основы SQL. Оператор INTERSECT

Основы SQL. Оператор INTERSECT

11 октября 2012 - Рубрики Программирование

3206 просмотров

В сайдбар справа добавлена кнопка Google+. Если вам поможет данный материал, прошу вас нажмите на кнопку - порекомендуйте сайт в Google.

Добрый день!

Продолжаем изучение языка работы с базами данных SQL, сегодняшняя небольшая статья посвящена оператору INTERSECT. Недавно мы изучили с вами два оператора для работы с множествами — UNION (объединение) и MINUS (вычитание). Оператор INTERSECT находит результаты, которые присутствуют в результатах обоих запросов (пересечение)

Синтаксис оператора довольно прост

SELECT поле1, поле2,... полеN FROM таблица1 WHERE условие
INTERSECT
SELECT поле1, поле2,... полеN FROM таблица2 WHERE условие
...
ORDER BY 1,2,3....

Также, как и в предыдущих множественных операторах конструкция ORDER BY пишется после последнего запроса.

Теперь к практике. Напомню условия задачи из статьи по оператору MINUS:
Для контроля доступа к интернет ресурсам абонентам проставляются различные программные группы, по которым оборудование дает доступ. Задача найти абонентов с группой «abc», при этом включить только тех абонентов, у которых также проставлена группа «def»
Эту задачу можно решить несколькими способами, рассмотрим некоторые

SELECT username, account FROM usergroups WHERE groupname LIKE 'abc'
INTERSECT
SELECT username, account FROM usergroups WHERE groupname LIKE 'def'

второй вариант такой

SELECT * FROM usergroups u1
WHERE groupname LIKE 'abc'
AND EXISTS (SELECT * FROM usergroups u2
                WHERE u2.id=u1.id and groupname LIKE 'def')

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

Если этот материал оказался вам полезен, порекомендуйте его в в Google, нажав кнопку Google+ справа в сайдбаре или через кнопки социальных сервисов ниже.

П.С. не забудьте оставить комментарий к статье, а также поделиться ссылкой с друзьями и коллегами через социальные сервисы или скопировав ссылку на статью ниже. Кроме того, вы можете предложить тему статьи через кнопку слева "Предложить тему статьи". Там же можно оставить пожелания, идеи по развитию сайта, а также благодарности (ну а вдруг)
П.П.С. предлагаю вам также вступить в Группа Вконтакте!группу Вконтакте, где вы сможете пообщаться с участниками на интересующие вас темы. Смелее!!!
Если вы больше времени проводите в Twitter, то за обновлениями на сайте можно следить, подписавшись на мою лентуTwitter: follow me!

Возможно вам также будут интересны статьи :

 

Предыдущие материалы из данной категории:

Комментариев: 0 ,

Понравилась статья? Поделитесь ссылкой




Оставьте комментарий:




:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

Я человек, а не бот.