İlişkiler ve JOIN
SELF JOIN ve CROSS JOIN
Aynı tabloyu iki rolde kullan veya kombinasyon üret.
Kavramı anlayalım
SELF JOIN ayrı bir SQL anahtar kelimesi değildir; aynı tabloyu farklı takma adlarla ilişkilendirme desenidir. Employee tablosunu çalışan ve yönetici rolünde iki kez kullanabiliriz. Yöneticisi olmayan en üst çalışanı korumak için LEFT JOIN gerekir.
CROSS JOIN her sol satırı her sağ satırla eşleştirir. Altı müşteri ile yedi ürün 42 kombinasyon üretir. Bu, tarih–ürün matrisi gibi senaryolarda yararlıdır; yanlışlıkla kullanılırsa satır sayısını katlar. Bir ilişki bekliyorsan eksik ON koşulunu CROSS JOIN ile telafi etme.
Hiyerarşi, karşılaştırma ve kontrollü kombinasyon listeleri için.
Kartezyen büyümeyi önceden hesaplamamak.
Aynı konu. Üç farklı derinlik.
SELECT e.FullName AS Employee, m.FullName AS Manager FROM lab.Employee AS e
LEFT JOIN lab.Employee AS m ON m.EmployeeId = e.ManagerId;Rasim’in yöneticisi NULL; Ada ve Can ona bağlıdır.
Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.
Önce kendin dene.
Doğrudan Ada’ya bağlı çalışanları listele.
Çözümü ve açıklamasını göster
SELECT e.FullName FROM lab.Employee AS e JOIN lab.Employee AS m ON m.EmployeeId = e.ManagerId WHERE m.FullName = N'Ada';Deniz ve Ece bulunur.