Intersect
Возвращает все различные значения, входящие в результаты выполнения запросов, указанных как слева, так и справа от оператора INTERSECT.
<запрос1>
INTERSECT
<запрос2>
Запросы на создание Базы Данных и таблиц в ней:
CREATE DATABASE University
CREATE TABLE [dbo].[Audit](
[IDAud] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL,
[Kolv_mest] [numeric](18, 0) NULL,
[ID_cel] [int] NULL
)
CREATE TABLE [dbo].[Cel](
[IDCel] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](10) NULL
)
CREATE TABLE [dbo].[DayOfWeek](
[IDDay] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL
)
CREATE TABLE [dbo].[Disc](
[ID_disc] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL,
[Kol_chas] [numeric](18, 0) NULL
)
CREATE TABLE [dbo].[Dolzh](
[IDDolzh] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL
)
CREATE TABLE [dbo].[Group](
[IDGroup] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL,
[Chisl_stud] [numeric](18, 0) NULL,
[Chisl_podg] [numeric](18, 0) NULL,
[God_post] [date] NULL)
CREATE TABLE [dbo].[Kafed](
[IDKafed] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL)
CREATE TABLE [dbo].[Obuch](
[IDFobuch] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL)
CREATE TABLE [dbo].[Pair](
[IDPair] [int]PRIMARY KEY NOT NULL,
[start] [time](7) NULL,
[finish] [time](7) NULL)
CREATE TABLE [dbo].[PrePL](
[IDPrePL] [int]PRIMARY KEY NOT NULL,
[IDPrep] [int] NULL,
[IDUchPL] [int] NULL)
CREATE TABLE [dbo].[Prepod](
[IDPrep] [int]PRIMARY KEY NOT NULL,
[IDDolzh] [int] NULL,
[IDZvan] [int] NULL,
[IDKafed] [int] NULL,
[Family] [nchar](30) NULL,
[Name] [nchar](30) NULL,
[Surname] [nchar](30) NULL)
CREATE TABLE [dbo].[Raspisan](
[IDRasp] [int]PRIMARY KEY NOT NULL,
[IDPrePL] [int] NULL,
[IDDay] [int] NULL,
[IDroup] [int] NULL,
[IDPair] [int] NULL,
[IDAuditorium] [int] NULL)
CREATE TABLE [dbo].[Semestr](
[IDSemestr] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL)
CREATE TABLE [dbo].[Spec](
[IDSpec] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL)
CREATE TABLE [dbo].[Ucheb_Pl](
[IDUchPl] [int]PRIMARY KEY NOT NULL,
[IDdisc] [int] NULL,
[IDSpec] [int] NULL,
[IDVid] [int] NULL,
[IDFobuch] [int] NULL,
[IDSemestr] [int] NULL,
[God_stand] [date] NULL,
[Kol_par] [numeric](18, 0) NULL)
CREATE TABLE [dbo].[Vid_zan](
[IDVid] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL)
CREATE TABLE [dbo].[Zvan](
[IDZvan] [int]PRIMARY KEY NOT NULL,
[Naimen] [nchar](30) NULL)
После создания таблиц и связей между ними наша БД выглядит так:
Запрос выводит все поля в которых кол-во мест больше 20:
SELECT * FROM Audit WHERE Kolv_mest>20
Запрос обьеденяет 2 таблицы по условию что их ключевые поля равны
SELECT * FROM Kafed
INNER JOIN Prepod
ON Kafed.IDKafed = Prepod.IDPrep
Запрос обьеденяет 2 таблицы по условию что их ключевые поля равны и выравнивает поля по левой таблице
SELECT * FROM [dbo].[DayOfWeek]
LEFT OUTER JOIN [dbo].[Group]
ON [dbo].[DayOfWeek].[IDDay] = [dbo].[Group].[IDGroup]
Запрос обькденяет 2 таблицы по условию что их ключевые поля равны и выравнивает поля по правой таблице
SELECT * FROM Cel
RIGHT OUTER JOIN Pair
ON Cel.IDCel = Pair.IDPair
SELECT * FROM Semestr
CROSS JOIN Prepod
Запрос обьеденяет результаты 2-х запросов и одинаковые результаты выводит одним полем
SELECT * FROM Audit WHERE Kolv_mest>20
UNION
SELECT * FROM Audit WHERE Kolv_mest<20
Запрос обьеденяет результаты 2-х запросов и совпадающие поля выводит отдельно
SELECT * FROM Semestr WHERE Naimen>6
UNION ALL
SELECT * FROM Semestr WHERE Naimen>4
Запрос обьеденяет результаты 2х запросов и не выводит одинаковые результаты:
SELECT * FROM Audit WHERE Kolv_mest>15
EXCEPT
SELECT * FROM Audit WHERE Kolv_mest>20
Запрос обьеденяет результаты 2х запросов и выводит только одинаковые результаты:
SELECT * FROM Audit WHERE Kolv_mest>15
INTERSECT
SELECT * FROM Audit WHERE Kolv_mest>20