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:
Yorum Gönder