İki Tablodaki Farklı ve Aynı Kayıtlar

by Emre ARITÜRK 16. Temmuz 2011 09:41
Merhaba Arkadaşlar,
Bir süredir yazmaya vakit bulamadığım makaleler ile geri dönmüş bulunmaktayım.
Bu gün sizlere iki tablonun sahip olduğu aynı kolonlar arasındaki ortak ve farklı kayıtları listeleyebileceğiniz fonksiyonları anlatmaya çalışacağım.

Öncelikle 2 adet tabloya ihtiyacımız olacak. Bunlar aynı yapılarda olmasına gerek olmayan,ancak bu fonksiyonları denemek için aynı isimli birkaç alana ihtiyaç duyacağımız kolonlardır.
Aşağıdaki 2 tabloyu oluşturalım ve sırasıyla CustTable1 ve CustTable2 isimlerini verelim:
Daha sonra bu tablolara çeşitli kayıtlar girelim :
 
Evet kayıtlarımızı girdik ve listeledik. Şimdi gelelim esas konumuza.
İki tablonun (select esnasında vermiş olduğunuz kolonlar arasındaki) kesişen kayıtları için INTERSECT, farklı kayıtları için EXCEPT komutlarını kullanabilirsiniz. Her iki komut ta UNION ailesinden komutlar olup 2 adet SELECT Cümlesi arasına yazılıyor. Burada bu iki komutunda çalışma şekli ilk select cümlesi üzerinden çalışmaktadır. Yani INTERSECT ile iki select arasındaki ortak kayıtları almak istediğinizde SQL, ilk select ile gelen kayıtlar için ikincici select e bakar ve orada olanları getirir. Yani işin özü olarak bu iki komutta referans olarak ilk select ifadenizi alır.
EXCEPT komutunda ise ilk ikinci select te olmayıp birinci select içinde olan kayıtları getirir. Yani SQL üzerinde ilk olarak INTERSECT i gösterirsek :
 

Görüldüğü gibi bize her iki tabloda da ortak olan ve select ifadesinde görmek istediğimiz kolonlar olan Ad,Soyad bilgilerini getirdi.
Kesişim ifadesinde (INTERSECT) aslında ilk select veya ikinci select ifadesinin sırası çok önemli değildir. Ancak fark (EXCEPT) ifadesinde sıra önemlidir:

Bu resimdeki sorguda referans sorgumuz CustTable1 üzerinden geçti bu tabloda olup diğer tabloda olmayanları listeledi.Sorgularımızın sırasını değiştirirsek:

Gördüğünüz gibi referans sorgumuzu değiştirdiğimizde bu sefer CustTable2 de olup 1 de olmayan kayıtları listedeli.
Bir sonraki yazıda görüşmek üzere.

Tags: , , ,

SQL Komutları | T-SQL

Yorumlar (3) -

18.07.2011 18:01:14 #

Durmuş ALTIN

Çok faydalı bir yazı olmuş. Eline sağlık emre hocam...

Durmuş ALTIN Türkiye | Yanıtla

19.07.2011 05:34:25 #

Hakan Soyer

Hocam Selam,
uzun zamandır araştırdığım bir konuydu. in ve not in kullanmaktan gına gelmişti Smile Konuyu araştırırken tesadüfen siteni gördüm. Çok güzel ve ince konulara değinmişsin.
Eline ve klavyene sağlık.

Hakan Soyer Türkiye | Yanıtla

19.07.2011 14:16:16 #

Murat Gezer

Farklı iki tablodan benzer verileri listelemek için gereken sorgulamayı kısa yoldan öğrenmek iyi oldu. Ayrıca bu iki komutundan nasıl doğru şekilde kullanıldığını da öğrenmiş olduk. Eline sağlık Emre.

Murat Gezer Türkiye | Yanıtla

Yorum ekle




  Country flag
biuquote
  • Yorum
  • Canlı önizleme
Loading


RecentPosts

Arşiv

Powered by BlogEngine.NET 2.0.0.36 - Eco Theme by n3o Web Designers