Yandex Metrica
SQL Server'da EXCEPT Kullanımı - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

SQL Server'da EXCEPT Kullanımı

20.05.2022 yasinsunmaz 2049 0

SQL Server'da çok karşılaşılan ya da çok fazla ihtiyaç duyulmayan bir EXCEPT komutunu sizlere anlatmaya çalışacağım. EXCEPT komutu ile bir sorgunun sonuç kümesini başka bir sorgunun başka bir sonuç kümesinden çıkarmak için kullanıyoruz. Biraz kafa karıştırıcı olabiliyor. Kısaca sizin ilk sorgunuzdan elde edilen veri listesi ile ikinci sorgunuzdan elde edilen veri listesini çıkarır. Sonuç olarak size ilk sorgunun sonucunda olup ikinci sorgunun sonucunda olmayan kayıtları döndürür. Yazının devamında açıklama ve örnekler ile rahatça anlayabileceksiniz.

Bu yazdığım sorguları Nortwind veri tabanı üzerinden yaptım. Veri tabanını indirmek için buraya tıklayabilirsiniz. Veri tabanını SQL Server üzerinden açıp script kodunu çalıştırabilirsiniz. SQL Server'da script dosyasını nasıl çalıştırılır bilmiyorsanız SQL Server Script Alma ve Çalıştırma adlı yazılımı inceleyebilirsiniz.

EXCEPT Kullanımı

Aşağıda SQL Server EXCEPT komutunun sözdizimi gösterilmektedir:

query_1
EXCEPT
query_2

Yukarıdaki sözdiziminde iki sorgunun sonuç kümelerini birleştirmek için kurallar şunlardır:

  • Her iki sorguda da sütun sayısı ve sırası aynı olmalıdır.

  • İlgili sütunların veri türleri aynı veya uyumlu olmalıdır.

Veri Kümesini Karşılaştırma

Şimdi aşağıdaki görsele baktığımızda T1'de 1,2,3 ve T2'de 2,3,4 kayıtlarının olduğunu ve EXCEPT komutu ile sorgulandığında ise kırmızı olarak belirtilen alanın bize sonuç olarak döndüğünü görebiliyoruz. Buradaki durum T1'den T2'yi çıkardığımızda 2 ve 3 numaralı kayıt T2'de yer alıyor. Ama T1'deki 1 numaralı kayıt T2'de bulunmuyor. Bu yüzden de bize 1 şeklinde sonuç dönüyor.

Özetle T1'de olup T2'de olmayan kayıtları getirmiş oluyor.

 

SQL Server'da EXCEPT Kullanımı

SQL Server EXCEPT Komutu Uygulaması

Products ve OrderDetails tabloları arasında bir birleştirme yapıp Products tablosunda olup Order Details tablosunda olamayn ProductID değerlerini listeleyeceğiz. Az önce bahsettiğimiz hususlara dikkat ederek çekilen sütün sayısı, sırası ve veri tipi aynı olmalıdır. Buna dikkat ederek Products tablosundan sadece ProductID değerini seçip, OrderDetails tablosundan da yine ProductID değerini seçiyoruz. Veri tipleri ikisinin de int olduğu için bir sorun olmayacak. Products tablosunun sorgusunu yazıp araya EXCEPT komutunu ekliyoruz. Sonrasında ise OrderDetails tablosunun sorgusunu yazıp sorgumuzu Execute veya F5 ile çalıştırıp sonucu görebiliyoruz.

SELECT
    p.ProductID
FROM
    Products p
EXCEPT
SELECT
    od.ProductID
FROM
    [Order Details] od

Sorgu Sonucu

Sorguyu çalıştırdığınızda Products tablosunda olup OrderDetails tablosunda olmayan 14 adet kayıt görmekteyiz.

SQL Server'da EXCEPT Kullanımı

Durumu Test Etme

Şimdi de durumu iyice anlamak için öncelikle Products tablosunda 78 ID değerine kayıt olduğunu teyit etmek için sorgumuzu yazıp sonuca bir bakalım:

SQL Server'da EXCEPT Kullanımı

Görüldüğü üzere 78 ID değerine ait kaydımız bulunmakta. Şimdi de OrderDetails tablosunda 78 ID değeri kayıt olup olmadığını teyit etmek için sorgumuzu yazıp sonuca bir bakalım:

SQL Server'da EXCEPT Kullanımı

Gördüğünüz üzere 78 ID değerine ait bir kaydımız bulunmamaktadır. EXCEPT komutu ile ilk tablonun ikinci tablodan farkının sonucu böyle görebilmekteyiz. Bazı durumlarda gerçekten işinizi kolaylaştıracaktır.

Kaynak

https://www.sqlservertutorial.net/sql-server-basics/sql-server-except/

Umarım faydalı olmuştur. İyi çalışmalar.

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

SQL Fonksiyonları: Veritabanlarında Güçlü ve Esnek İşlemler

09.06.2023 yasinsunmaz 300 0

SQL (Structured Query Language), veritabanı yönetim sistemlerinde verileri yönetmek, sorgulamak ve işlemek için yaygın olarak kullanılan bir dildir. SQL fonksiyonl...

SQL'e Dair Her Şey OneSQL'de, Ne Ararsanız Bulabileceksiniz

03.06.2023 yasinsunmaz 252 0

Veri tabanı yöneticilerinin yanında zaman zaman yazılımcıların da SQL'i aktif olarak kullanması gerekebiliyor. SQL'i belli başlı şekillder kullanıp işlemlerimizi ...

SQL Server Offset Fetch Kullanımı

06.03.2023 yasinsunmaz 637 0

Merhabalar uzun zamandır yazı yazamadım. Ülke olarak zor zamanlar geçirmekteyiz. Herkese çok geçmiş olsun diyerek kısa bir yazı ile tekrar buradayım. SQL ...

SQL Server Sequence Kullanımı

14.01.2023 yasinsunmaz 1241 0

Veritabanında yeni keşfettiğim Sequence özelliğini sizlerle paylaşmak isterim. Squence genel olarak belirli değerler arasında numeric ve sıralı sayılar üretir. ...

SQL Server OUTPUT Kullanımı Silinen Kaydın Bilgilerini Geriye Döndürme

11.01.2023 yasinsunmaz 368 0

Bu yazımda SQL Server'da OUTPUT ile DELETED komutunun yapısını inceleyeceğiz. Kayıtlar üzerinde yapılan silme işlemlerinde, kaydın bilgilerin...