Bu yazı SQL Server’da EXCEPT, INTERSECT, UNION ve UNION ALL ifadelerini kullanımını anlatmaya çalışacağım. (Örnekler için Microsoft’un sağladığı AdventureWorks2016 örnek veri tabanını kullanacağım)

EXCEPT ve INTERSECT ifadeleri UNION ve UNION ALL kadar çok kullanılmasa kullanıldıkları yerlere göre çok etkili ifadelerdir. 4 ifadenin de kullanımı aynıdır sadece yaptıkları işler birbirlerine göre farklılık gösterir.

EXCEPT Komutu

Bu komut 2 SQL sorgusu içinde birinde olup diğerinde olmayan kayıtları listelemek için kullanılır. Örneğin ürünler tablosunda olup satışlar tablosunda olmayan kayıtları listelemek için kullanabiliriz:

SELECT ProductID FROM Product
EXCEPT
select ProductID from SalesOrderDetail
Ürünler tablosunda olup satışlar tablosunda olmayanların sorgusu
Ürünler tablosunda olup satışlar tablosunda olmayanların sorgusu

Aynı cevabı NOT IN kullanarak da alabilirdik fakat EXCEPT ifadesinde istediğiniz kadar alan verip sorgulama yapabilirsiniz. Tek dikkat etmeniz gereken iki sorguda da aynı sayıda ifade olması ve sütunların tiplerinin birbirleriyle uyumlu olmasıdır. Şimdi de liste fiyatından farklı satılan ürünleri bulmak için bir sorgu yazalım:

SELECT ProductID, UnitPrice FROM SalesOrderDetail
EXCEPT
SELECT ProductID, ListPrice FROM Product
Liste fiyatından farklı bir fiyata satılmış ürünlerin listesi
Liste fiyatından farklı bir fiyata satılmış ürünlerin listesi

EXCEPT ifadesinden dönen sonuçları bir tablo gibi görüp dönen sonuçlar üzerinden de yeni sorgular türetebilirsiniz.

Except komutunun görsel ifadesi
Except komutunun görsel ifadesi

INTERSECT Komutu

INTERSECT komutunu EXCEPT ifadesinin tam tersi düşünebilirsiniz. EXCEPT komutu nasıl 2 sorgunun farklarını veriyorsa INTERSECT komutu da 2 sorgunun eşlerini veriyor. Kümelerin kesişimi gibi düşünebilirsiniz. Önceki örnekten yola çıkarak liste fiyatına satılmış ürünlerin listesini alabiliriz:

SELECT ProductID, UnitPrice FROM SalesOrderDetail
INTERSECT
SELECT ProductID, ListPrice FROM Product
Liste fiyatına satılmış ürünlerin listesi
Liste fiyatına satılmış ürünlerin listesi
Intersect komutunun görsel ifadesi
Intersect komutunun görsel ifadesi

UNION ve UNION ALL Komutu

UNION ve UNION ALL komutları tabloları birleştirmek için kullanılırlar. Komutların kullanımları da öncekiler gibi aynıdır. İkisinin arasındaki tek fark UNION ifadesinde tekrar eden kayıtlar yer almaz fakat UNION ALL ifadesi bu şartı aramaz ve tekrar eden kayıtları da getirir.

SELECT ProductID, UnitPrice FROM SalesOrderDetail
UNION
SELECT ProductID, ListPrice FROM Product
Union Komutunun kullanılması
Union Komutunun kullanılması
SELECT ProductID, UnitPrice FROM SalesOrderDetail
UNION ALL
SELECT ProductID, ListPrice FROM Product
Union All Komutunun kullanılması
Union All Komutunun kullanılması

Union ve Union All komutunun görsel ifadesi
Union ve Union All komutunun görsel ifadesi

Bu yazıda EXCEPT, INTERSECT, UNION ve UNION ALL ifadelerinin kullanımlarını öğrenmiş olduk.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir