COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
20/ 65

İlişkiler ve JOIN

LEFT, RIGHT ve FULL OUTER JOIN

Eşleşmeyen kayıtları kaybetme.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

LEFT JOIN sol tablonun tüm satırlarını korur; eşleşmeyen sağ sütunları NULL yapar. RIGHT JOIN aynı mantığı ters yönde uygular. FULL OUTER JOIN iki tarafın da eşleşmeyenlerini korur. Karmaşık raporlarda tablo sırasını açık tutmak için LEFT JOIN çoğu zaman daha okunabilirdir.

LEFT JOIN sonrasında sağ tablonun alanına WHERE koşulu koymak eşleşmeyen satırları eleyebilir. “Tüm müşteriler ve varsa ödenmiş siparişleri” için ödeme filtresini ON içine yerleştir. NULL ile işaretlenen eşleşmeme durumunu gerçek veri NULL’ından ayırırken sağ tablonun NULL olamayan anahtarını kontrol et.

NERESİNDE KULLANIRSIN?

Siparişsiz müşteri, satılmayan ürün ve karşılaştırmalı veri uzlaştırma raporlarında.

SIK YAPILAN HATA

Sağ taraftaki filtreyi WHERE’e koyup LEFT JOIN’i fiilen iç birleşime çevirmek.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT c.FullName, o.OrderId FROM lab.Customer AS c
LEFT JOIN lab.SalesOrder AS o ON o.CustomerId = c.CustomerId WHERE o.OrderId IS NULL;

Siparişsiz Selin bulunur.

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.

02 / SIRA SENDE

Önce kendin dene.

Her müşterinin sipariş sayısını, sıfırlar dahil göster.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT c.CustomerId, COUNT(o.OrderId) AS Orders FROM lab.Customer AS c LEFT JOIN lab.SalesOrder AS o ON o.CustomerId = c.CustomerId GROUP BY c.CustomerId;

Selin için 0, toplam müşteri satırı 6.