SQL Dış Birleştirme

Sql Dis Birlestirme



Birleştirmelerin ilişkisel veritabanlarının en tanımlanabilir özelliklerinden biri olduğunu söylemeye gerek yok. Birleştirmeler, tutarlı bir veri işlemi oluşturmak için ilgili koşula dayalı olarak bir veya daha fazla tablodaki verileri birleştirmemize olanak tanır.

SQL'de, her biri katılımcı tablolardaki veya sonuçtaki kümedeki verileri nasıl işlediğine dair benzersiz bir yönteme sahip çeşitli birleştirme türleri vardır. SQL'de en yaygın birleştirme türlerinden biri OUTER JOIN'dir.







SQL'deki bir OUTER JOIN, ilgili tablolardan eşleşen tüm satırların yanı sıra bir veya her iki tablodan eşleşmeyen satırları alır. NULL değerler veya eksik kümeler içeren tablolarla uğraşırken kullanışlı olur.



Bu birleştirmelerin ne yaptığını, nasıl çalıştığını ve bunları bir SQL veritabanında nasıl kullanabileceğimizi daha ayrıntılı olarak inceleyelim.



Gereksinimler:

Bu eğitim için MySQL 8.0 ile çalışacağız ve Sakila örnek veritabanını kullanacağız. Ancak uygulanabilir olduğunu düşündüğünüz diğer veri kümelerini kullanmaktan çekinmeyin.





Dış Birleşim Türleri

SQL'de üç ana OUTER JOINS türü vardır. Bu OUTER JOINS türleri şunları içerir:

  1. Sol DIŞ BİRLEŞMELER

  2. LEFT OUTER JOINS durumunda, birleştirme sol tablodaki tüm satırları ve sağ tablodan yalnızca eşleşen satırları alır. Sağ tablodan eşleşen satır yoksa birleştirme, sağ tablodaki sütunlar için NULL değerlerini döndürür.



  3. Sağ DIŞ BİRLEŞMELER

  4. Bu, RIGHT OUTER JOIN'e benzer. Ancak, sağ tablodaki tüm satırları alır, ancak soldaki tablodan yalnızca eşleşen satırları alır. Sol tablodan eşleşen satır yoksa birleştirme, sol tablodaki sütunlar için NULL değerlerini içerir.

  5. TAM DIŞ BİRLEŞİMLER

  6. Son olarak TAM DIŞ BİRLEŞMELERİMİZ var. Bu birleştirme türü hem SAĞ hem de SOL dış birleştirmeleri birleştirir. Sonuç olarak birleştirme, sol veya sağ tabloda bir eşleşme olduğunda tüm satırları alır. Eşleşme yoksa birleştirme, tablodaki eşleşmeyen sütunlar için NULL değerlerini döndürür.

SQL OUTER JOIN'in sözdizimi

Aşağıda bir SQL OUTER JOIN'in sözdizimi ifade edilmektedir. Ancak sözdiziminin hedef veritabanı motoruna bağlı olarak biraz değişebileceğini akılda tutmakta fayda var.

Aşağıdaki genel bir yapıdır:

Sütunları SEÇİN
tablo1'den
[SOL | SAĞ | FULL] OUTER JOIN tablosu2
ON tablo1.sütun_adı = tablo2.sütun_adı;

SQL'de bir OUTER JOIN'in sözdizimi oldukça açıklayıcıdır.

Örnekler:

SQL'de çeşitli OUTER JOINS türlerini nasıl uygulayabileceğimize dair bazı örnek kullanıma bakalım.

Bahsettiğimiz gibi gösterim amacıyla Sakila örnek veritabanını kullanacağız. Bu durumda “müşteri” ve “ödeme” tablolarını kullanıyoruz.

Örnek 1: SOL DIŞ BİRLEŞTİRME

OUTER JOIN ile başlayalım. Varsa ödeme bilgileriyle birlikte tüm müşteri bilgilerini de almak istediğimizi varsayalım.

Bu, tüm müşteri bilgilerini (solda) ve varsa ödeme bilgilerini (sağda) istediğimiz için LEFT OUTER JOIN'i uygulanabilir hale getirir.

Müşteri herhangi bir ödeme yapmamışsa birleştirme, ödemeyle ilgili sütunlar için NULL değerleri gösterecektir.

Bir örnek aşağıdaki gibidir:

SEÇME
c.müşteri_kimliği,
c.ilk_ad,
c.soyadı_adı,
p.miktar,
p.ödeme_tarihi
İTİBAREN
müşteri c
LEFT OUTER JOIN ödeme p
AÇIK
c.müşteri_id = p.müşteri_id;

Verilen sorguya “müşteri” tablosundan “müşteri_id”, “ad_adı” ve “soyadı” sütunlarını dahil ediyoruz. Ayrıca 'ödeme' tablosundan tutarı ve 'ödeme_tarihi'ni de ekliyoruz.

Daha sonra “müşteri_id”sine göre “müşteri” ve “ödeme” tabloları arasında LEFT OUTER JOIN gerçekleştiriyoruz.

Bunlar, ödeme ayrıntılarıyla (varsa) birlikte tüm müşterilerdir (ödeme yapılmış olsun ya da olmasın).

Örnek bir çıktı aşağıdaki gibidir:

Örnek 2: SAĞ DIŞ BİRLEŞTİRME

Şimdi SAĞ DIŞ BİRLEŞTİRME işlemine geçelim. Varsa, bu durumda tüm ödeme bilgilerini ve ilgili müşteriyi dahil etmek istediğimizi varsayalım.

Bu durumda, bir müşteri tarafından ödeme yapılırsa, katılımda o müşterinin ayrıntıları görüntülenecektir. İlişkili müşterisi olmayan bir ödeme varsa, müşteriyle ilgili sütunlar için NULL değerleri gösterecektir.

SEÇME
c.müşteri_kimliği,
c.ilk_ad,
c.soyadı_adı,
p.miktar,
p.ödeme_tarihi
İTİBAREN
müşteri c
SAĞ DIŞ KATIL ödeme p
AÇIK
c.müşteri_id = p.müşteri_id;

Ortaya çıkan set aşağıdaki gibidir:

Örnek 3: TAM DIŞ BİRLEŞTİRME

FULL OUTER JOIN ise tüm müşteri bilgilerini ve ödemeyi alır. Bu, tüm müşterileri ve tüm ödemeleri içerir ve tablolar arasında eşleşme olmadığında NULL değerlerini gösterir.

SEÇME
c.müşteri_kimliği,
c.ilk_ad,
c.soyadı_adı,
p.miktar,
p.ödeme_tarihi
İTİBAREN
müşteri c
TAM OUTER JOIN ödeme p
AÇIK
c.müşteri_id = p.müşteri_id;

MySQL'in yerel olarak FULL OUTER JOIN'i desteklemediğini unutmamak gerekir. LEFT JOIN, UNION ve RIGHT JOIN ile biraz jiujitsu büyüsü yapmalısınız. Oldukça sinir bozucu olduğunu ekleyebiliriz.

Çözüm

Bu derste OUTER JOINS hakkında her şeyi öğrendik. SQL'de OUTER JOIN nedir, OUTER JOINS türlerini ve bu OUTER JOINS türlerinin nasıl kullanılacağına dair örnekleri öğrendik.