Pazartesi, Ağustos 04, 2008

SQL Server 2005 : Intersect ve Inner join arasındaki fark

Intersect komutu intersect ile bağlanmış tablolarda eşleşen kayıtları bulmak için kullanılır. Intersect komutu çoğu kez inner join ile aynı sonuçları döndürür.

Intersect komutunu kullanırken veritabanından çektiğiniz sahaların sayıları, sıraları aynı olmalı ve veri tiplerinin de uyumlu olması gerekir.
Şimdi intersect komutunu daha iyi anlamak için birkaç örnek yapalım.


Örnek 1
SELECT *
FROM HumanResources.EmployeeDepartmentHistory
WHERE EmployeeID IN (1,2,3)
INTERSECT
SELECT *
FROM HumanResources.EmployeeDepartmentHistory
WHERE EmployeeID IN (3,2,5)

Sonuç


Yukarıdaki sonuca baktığınızda her iki tablodan da birbiri ile eşleşen EmployeeID değer 2 ve 3 olan kayıtların getirilmiş olduğunu görürsünüz.


Örnek 2
SELECT VendorID,ModifiedDate
FROM Purchasing.VendorContact
INTERSECT
SELECT VendorID,ModifiedDate
FROM Purchasing.VendorAddress

Sonuç


Sorgu sonucu grid üzerinde her iki tabloda eşleşen 104 kayıt gözükmektedir.

Örnek 3
SELECT va.VendorID,va.ModifiedDate
FROM Purchasing.VendorContact vc
INNER JOIN Purchasing.VendorAddress va ON vc.VendorID = va.VendorID
AND vc.ModifiedDate = va.ModifiedDate

Sonuç


Sorgu sonucu grid üzeride her iki tabloda eşleşen tüm kayıtlar gösterilir. Yukarıda örnekten farklı olarak bu örnekte inner join sağdaki ve soldaki tablolardan tüm kayıtları getirir. Dikkat ederseniz bunların bir çoğu biribiri ile eşleşen kayıtlardır.

Örnek 4
SELECT DISTINCT va.VendorID,va.ModifiedDate
FROM Purchasing.VendorContact vc
INNER JOIN Purchasing.VendorAddress va ON vc.VendorID = va.VendorID
AND vc.ModifiedDate = va.ModifiedDate

Sonuç


Bu örnekte ise yukarıdaki örnek farklı olarak "distinct" komutunu kullandık böylece tekrarlayan veriler sorgu sonucunda çıkarıldı ve yine sorgu sonucu olarak 104 tekil kayıt grid üzerine döküldü.


Kaynak : http://blog.sqlauthority.com/2008/08/03/sql-server-2005-difference-between-intersect-and-inner-join-intersect-vs-inner-join/

Hiç yorum yok: