Tavsiye, 2024

Editörün Seçimi

Sol, Sağ ve Tam Dış Birleştirme Arasındaki Fark

Daha önce, İç Birleştirme ile Dış Birleştirme arasındaki farkları tartıştık. Outer Join, Join işlemi sırasında kaybolacak olan sonuçtaki perdeleri koruyandır. Bu makalede; Outer Join türleri arasındaki farkları tartışacağız. Üç tür Dış Bağlantı vardır; Sol Dış Birleştirme, Sağ Dış Birleştirme ve Tam Dış Birleştirme. Sol, Sağ ve Tam Dış Birleştirme, uygulama planlarında ve elde edilen sonuçlarda farklılık gösterir. Dış, Sol, Sağ ve Tam Dış Birleşimden bir sözcük çıkartabiliriz. Aşağıda gösterilen karşılaştırma çizelgesi yardımıyla Sol, Sağ ve Tam Dış Birleştirme arasındaki farkları inceleyelim.

Karşılaştırma Tablosu

Karşılaştırma için temelSol dış katılmaSağ Dış KatılmaTam Dış Katılma
TemelSoldaki tablonun tüm dişleri sonuçta kalır.Sonuçta sağ tablonun tüm dişleri kalır.Sonuçta soldan sağa ve sağdan masaya kadar kalan tüm kutular kalır.
NULL UzatmaSağ tabanda eşleşen bir dize olmayan sol tablonun tupleri, sağ tablonun nitelikleri için NULL değerinde genişletilir.Sol tabanda eşleşen bir direğe sahip olmayan sağ tablonun solları, sol tablonun nitelikleri için NULL değerinde genişletilir.
Sol ve sol tablonun sağ ve sol tabanda eşleşen tupleri olmayan sağ tablonun sağ ve sol tablonun nitelikleri için NULL değerinde genişletildi.

Sol Dış Birleştirmenin Tanımı

Diyelim ki, “ Table_A Sol Dış Birleştirme Table_B ”. Yani Table_A, Sol Dış Birleştirme işleminin solunda göründüğü gibi sol tablomuz ve Table_B bizim sağ tablomuzdur.

İlk olarak, iç birleşim, tüm eşleşen başlıkları A ve B'den döndürecek olan Tablo_A ve Tablo_B'ye uygulanır.

Daha sonra, Table_B'de eşleşen bir tuple olmayan tüm tabloları Table_A'dan döndürür. Öyle ki, ortaya çıkan tuples, sağ tablonun nitelikleri için NULL değerlerle doldurulur.

Bu nedenle, Sol Dış Birleştirme'den elde edilen sonuç, tüm perdeleri sol tablodan ve sadece eşleşen tabloları sağ tablodan tutar.

Sol Dış Birleşmeyi örnek olarak tartışalım; Aşağıda iki tablomuz var, Öğrenci Tablosu ve Bölüm Tablosu.

Şimdi Öğrenci ve Bölüm Tablosunda Left Outer Join'i uygulayacağız.

SELECT * ÖĞRENCİ LEFT OUTER JOIN Departmanından Öğrenci
Öğrenci. Student_ID = Bölüm.Student_ID

Yukarıdaki sorguda, Öğrenci tablosu sol tablodur ve tablo Bölümü doğru tablodur. Öyleyse, Sol Dış Birleşmeye göre, sonuç Öğrenci tablosundaki tüm tuplere sahip olmalı ve yalnızca Bölüm tablosundaki tuples ile eşleşmelidir.

Sol Dış Birleşimden elde edilen sonucu gözlemleyin; Öğrenci tablosundaki tüm kitaplarla birlikte hem Öğrenci hem de Bölüm tablosundaki eşleşen kayıtlara sahiptir. Jimmy'nin öğrenci kimliği, Öğrenci masasından Joseph Harry, Bölüm tablosunda yoktu. Bu nedenle, Jimmy için bölüm tablosunun öznitelik değerleri, Joseph Harry NULL'a genişletildi.

Right Outer Join tanımı

Diyelim ki, “ Table_A Sağ Dış Birleştirme Table_B “. Yani Table_A Sağ Dış Birleştirme işleminin solunda göründüğü gibi sol tablomuz ve Table_B bizim sağ tablomuz.

Left Outer Join'de olduğu gibi, ilk önce iç birleştirmesi, tüm eşleşen başlıkları A ve B'den döndürecek olan Table_A ve Table_B'ye uygulanır.

Ardından, Table_A'daki eşleşen bir tupleı olmayan tüm tabloları Table_B'den döndürür. Öyle ki, sonuçtaki tekiller sol tablonun nitelikleri için NULL değerleriyle doldurulur.

Bu nedenle, sağ dış birleştirmeden elde edilen sonuç, tüm dişlileri sağ tabladan ve sadece sol tabladan gelen eşleştirici kapları tutar.

Right Outer Join'e bir örnekle tartışalım; yukarıda iki masamız var, Öğrenci Masası ve Bölüm Masası.

Şimdi Right Outer Join'e Öğrenci masasına ve Bölüm masasına başvuracağız.

Seçimi
Öğrenci. Student_ID = Bölüm.Student_ID

Yukarıdaki sorguda Öğrenci Masası Sol Masamız, Bölüm Masası ise sağ masamızdır. Sağ Dış Birleştirme işlemine göre, sonuç Bölüm tablosundaki tüm tekilleri ve sadece Öğrenci Tablodaki tekil tekillerini içermelidir.

Sağ dış birleşmeden elde edilen sonucu gözlemleyin; Hem Öğrenci hem de Bölüm tablosundaki eşleşen dosyalarla birlikte Bölüm tablosundaki tüm kitaplara sahiptir. Bölüm tablosundaki Student_ID 10536 ve 00954, Öğrenci tablosunda mevcut değil. Bu nedenle, Student_ID 10536 ve 00954 için Name'in öznitelik değeri NULL'a genişletildi.

Full Outer join tanımı

Diyelim ki, “ Table_A Tam Dış Katıl Table_B ”. Yani Table_A, Full Outer Join işleminin solunda göründüğü gibi sol tablomuz ve Table_B bizim tablomuz.

Tam Dış Katılma hem Sol Dış Katılma hem de Sağ Dış Katmanın birleşimidir . Başlangıçta, eşleşen tabloları her iki tablodan almak için Table_A ve Table_B üzerinde iç birleşim uygular. Daha sonra, Table_B'de eşleşen bir bağı olmayan NULL olan Table_A tuplesini uzatır. Dahası, bu tekilleri Table_B'den NULL olan, Tablo_A'da eşleşen bir tuple içermeyen uzatır.

Bu nedenle, Tam Dış Birleştirme, tüm masaları soldan ve sağ masadan korur, aynı zamanda her iki tablonun eşleşen kutularını tutar.

FULL Outer Join'e bir örnek verelim; Yukarıda iki tablomuz var, Öğrenci Masası ve Bölüm Masası.

Şimdi Öğrenci Masasına ve Departman masasına Tam Dış Katılma uygulayacağız.

SELECT * Öğrenci DOLU OUTER JOIN Bölümünden
Öğrenci. Student_ID = Bölüm.Student_ID

Yukarıdaki sorguda Öğrenci Tablosu bizim sol tablomuz ve Departman Masası bizim doğru tablomuz. Full Outer Join'e göre, sonuç her iki tablodaki tüm perdeleri içermelidir.

Tam dış birleşimden elde edilen sonucu gözlemleyin; Öğrenci ve Bölüm tablosundaki tüm başlıklara ve Öğrenci ve Bölüm tablosundaki eşleşen başlıklara sahiptir. Jimmy'nin öğrenci kimliği, Harry Harry, yani Öğrenci tablosunun sırasıyla 10026, 02256, 56362, Bölüm tablosunda yoktu. Bu nedenle, Jimmy, Joseph Harry için Department tablosunun öznitelik değerleri NULL'a genişletilmiştir. Department tablosundaki Student_ID 10536 ve 00954, Student tablosunun Student_ID sütununda mevcut değildir. Bu nedenle, Student_ID 10536 ve 00954 için Name niteliğinin öznitelik değeri NULL değerine genişletildi.

Sol, Sağ ve Tam Dış Birleştirme Arasındaki Temel Farklılıklar

  1. Left Outer Join'in sonucu, sol tablonun tüm iplerine sahiptir. Benzer şekilde, Sağ Dış Birleşimin sonucu, sağ tablonun tüm dişlerine sahiptir. Ve Full Outer Join'in sonucu hem sol hem de sağ masadan gelen tüm perdelere sahiptir.
  2. Sol Dış Birleştirmede, sağ tabanda eşleşen bir bağı olmayan sol tablonun tupleri, sağ tablonun nitelikleri için Boş değerlerle genişletilir. Opposite, Sağ Dış Katılma için geçerlidir. Ve Full Outer Join'te, sağ ve sol tablolarda eşleşen bir soluk olmayan sol ve sağ tablolardan, sağ ve sol tabloların nitelikleri için sırasıyla NULL ile genişletilir.

Sonuç:

Bir sorguda tablo adlarının pozisyonlarına dikkat edin. Sorgudaki tablo adının konumu, tablonun sol veya sağ tablo olarak kabul edilip edilmeyeceğine karar verir.

Top