SQL ile yaptığımız çalışmalarda gerekli olan ve bir nevi matematiksel işlem olan Except ve Intersect kullanımını görmüş olacağız.

Matematikten hatırladığınız üzere "Kümeler" konusunda kesişim ve birleşim konularına benzer niteliktedir. Buna bir örnek olarak bir şirkette iki tip çalışan olsun. Yönetici ve işçi şeklinde. Fakat bu şirkette şöyle bir durum da var "Bir yönetici ayrıca işçi olarak da çalışabiliyor."

Yöneticiler ve İşçiler Grafiği



Bu grafiğimizi SQL ile yapmaya çalışalım.
İki adet basit nitelikte tablomuz olsun. İlk tablomuz "Yoneticiler" adında olsun ve orada şirkette çalışan yöneticilerin ad ve soyad değerlerini tutalım.

Yoneticiler Tablosu

CREATE TABLE [dbo].[Yoneticiler] (
[yonetici_ID] INT PRIMARY KEY NOT NULL IDENTITY(1,1) ,
[ad_soyad] varchar(100) NULL
)

INSERT INTO [dbo].[Yoneticiler] ([ad_soyad]) VALUES ('AHMED SAY');
INSERT INTO [dbo].[Yoneticiler] ([ad_soyad]) VALUES ('MURAT PEK');
INSERT INTO [dbo].[Yoneticiler] ([ad_soyad]) VALUES ('SERKAN TOY');
INSERT INTO [dbo].[Yoneticiler] ([ad_soyad]) VALUES ('VEDAT SAPMAZ');
INSERT INTO [dbo].[Yoneticiler] ([ad_soyad]) VALUES ('NİHAT DOĞRU');


Yoneticiler Tablosu



İkinci tablomuz "Isciler" adında olsun ve orada şirkette çalışan işçilerin ad ve soyad değerlerini tutalım.

Isciler Tablosu

CREATE TABLE [dbo].[Isciler] (
[isci_ID] INT PRIMARY KEY NOT NULL IDENTITY(1,1),
[ad_soyad] varchar(100) NULL
)

INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('KENAN SOLAK');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('VEYSEL TANIR');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('NİHAT DOĞRU');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('AHMED SAY');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('HACI BEYAZ');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('HAKAN DEREN');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('VUSLAT DOĞAN');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('FURKAN ALİ');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('MERT BATU');
INSERT INTO [dbo].[Isciler] ([ad_soyad]) VALUES ('MURAT PEK');


Isciler Tablosu



Örnek 1: Hem işçi olup hem de yönetici olan kişileri bulalım. Yani kesişim (intersect) kümesini bulalım.

Kesişim Örnek Sorgu
SELECT ad_soyad FROM Isciler
INTERSECT
SELECT ad_soyad FROM Yoneticiler


Kesişim Örnek Çıktı



Örnek 2: İşçi olup yönetici olmayan kişileri bulalım. Yani sadece işçi olanları (except) kümesini bulalım.

Fark Örnek Sorgu

SELECT ad_soyad FROM Isciler
EXCEPT
SELECT ad_soyad FROM Yoneticiler


Fark Örnek Çıktı



Örnek 3: Yönetici olup işçi olmayan kişileri bulalım. Yani sadece yönetici olanları (except) kümesini bulalım.

Fark Örnek Sorgu


SELECT ad_soyad FROM Yoneticiler
EXCEPT
SELECT ad_soyad FROM Isciler


Fark Örnek Çıktı



Bol sorgulu günler :)

Kaynak: https://www.ontedi.com/sql/sql-server-except-fark-ve-intersect-kesisim-kullanimi