Yazılım Eğitim

Yeni Haberler

SQL Server Çoklu Tabloların kullanılması | Join Birleştirme

 

SQL Server Çoklu Tabloların kullanılması | Join Birleştirme

Selamlar arkadaşlar

Bu makalemizde sizlere sql ile çoklu tabloların kullanılmasından bahsedeceğim. 

Çoklu Tabloların Kullanılması

Normalizasyon formları uygulanarak bir çok tabloya dağıtılmış olan verilere tek bir sorguda ihtiyaç duyulacak durumlar olacaktır.
 
   Bazı durumlarda aynı tabloyu bile kendisi ile ilişkilendirip birleştirmeye ihtiyaç duyulabilir. Bu durumda birden çok tabloyu bir araya getirip tablolar üzerindeki ilgili alanlarla tabloları ilişkilendirip birleştirmemiz gerekecektir. 

     Birleştirme yapısında tabloların yazılış sırası özellikle büyük tablolar için performansı etkileyebilmektedir. 

     Ancak kullanımda ve görüntülenen kayıt sayısında herhangi bir farklılığa yol açmamaktadır.

    Çoklu tabloların kullanımını basit bir örnek üzerinden izah etmeye çalışalım. 

   Varsayalım ki veri tabanımızda öğrencilerin nüfus bilgilerinin tutulduğu “Birey” tablosu, adres ve telefon gibi iletişim bilgilerinin tutulduğu “Iletisim” tablosu olsun. 

   Adresi Erzurum ilinde olan öğrencilerin TC Kimlik Numarası, ad soyad ve telefon bilgilerine ihtiyaç duyulduğunda “Birey” ve ”Iletisim” tablolarını ortak alanlar üzerinden ilişkilendirerek sorgulamamız gerekecektir. 
    
    Birden fazla tabloyu birleştirmek için kullanılan yöntemler ana hatlarıyla şöyle: 

  • Cross Join: Tabloların kartezyen çarpımını bulmak için kullanılır. 
  • Klasik Join : “Where” cümleciği kullanılarak yapılan birleştirmedir. 
  • Inner Join : Tablolar ilişkilendirip sorgulandığında sadece uyuşan kayıtlar geri döner. 
  • Outer join: Tabloların herhangi birinde yer alan kayıtları döndürür. “Left”, “Right” ve “Full” olmak üzere 3 türü bulunmaktadır.

KARTEZYEN ÇARPIMI

    Çapraz birleştirme (kartezyen çarpımı), üzerinde işlem yapılan iki tablodaki kayıtları çaprazlamak için kullanılır. 
     
    En nadir ihtiyaç duyulan bu birleştirme türünde ilişkili olsun veya olmasın birleştirilecek tabloların tüm satırları listelenir. 

    Birleştirme sonrası oluşan listemizin ilk satırında, birinci tablonun ilk kaydı ile ikinci tablonun ilk kaydı birlikte görüntülenir.

    Listenin ikinci satırında ise birinci tablonun ikinci kaydı, ikinci tablonun ilk kaydı ile birlikte görüntülenmektedir. 
    
    Birinci tablodaki tüm tüm kayıtların, ikinci tablonun ilk kaydı ile listelenmesinden sonra birinci tablodaki tüm kayıtlar tek tek bu defa da ikinci tablodaki ikinci kayıtlar ile görüntülenir. 

  Ta ki ikinci tablodaki tüm kayıtlar da listelenene kadar çaprazlama bu şekilde devam eder. 

       Üzerinde birleştirme yapılan iki tablonun birincisinde x adet satır, diğerinde y adet satır varsa kartezyen çarpımı ile birlikte sonuç olarak x*y tane satırdan oluşan bir sonuç tablosu oluşmaktadır. 

       Çapraz birleştirmede “From” deyiminden sonra ilk tablonun adı ile ikinci tablonun adı arasına “Cross Join” ifadesi yazılmaktadır. 

      Klasik birleştirmede iki tablo arasına “,” konulduğunu ve tablo birleştirme koşulunun “Where” ifadesi sonrasında kullanıldığını hatırlatalım.

Söz Dizimi



Klasik Birleştirme

Bu birleştirme türünde tabloların eşleştirilmesi için gerekli koşul, “Where” ifadesinden sonra kullanılır.     
    İki veya daha fazla tabloda yer alan aynı türde verileri içeren alanlar, “Where” ifadesinden sonra kullanılan koşul ile eşitlenerek klasik birleştirme işlemi gerçekleştirilir.




Eşiti Olan Birleştirme

Eşiti olan birleştirme sonucunda birleştirilen iki tablonun her ikisinde de bulunan ortak değere sahip olan satırların listeleniyor. 
 
    Bu birleştirmede bir tablo üzerinde bulunan değerler diğer tablonun ilgili alanı ile eşleştirilip sadece eşleşen değerler birleştirilir. 

    Eşiti olan birleştirmeyi “iç birleştirme” (Inner Join) ve klasik birleştirme ile gerçekleştirebiliriz. 




EŞİTİOLMAYAN BİRLEŞTİRME

    Eşiti olmayan birleştirmeye dış birleştirme (Outer Join) de denilmektedir. 
  
    Eşiti olan birleştirmede birinci ve ikinci tablodan birleştirme ölçütüne uyan kayıtlar görüntülenirken birleştirme şartına uymayan kayıtlar sonuç olarak dönmez.
   
    Fakat eşiti olmayan birleştirmede birleştirme şartına uyan kayıtlarla birlikte şartı sağlamayan diğer kayıtlar da listelenmektedir. 

   Eşiti olmayan birleştirme “Left Outer Join”, “Right Outer Join” ve “Full Outer Join” yapıları ile gerçekleştirilmektedir. 

Sağ Dış Birleştirme (Right Outer Join)

      Sağ dış birleştirme, sol dış birleştirmeye büyük ölçüde benzemektedir. 

   Sol dış birleştirmede ilk tablodaki tüm kayıtlar ve ikinci tabloda koşula uyan kayıtlar listelenmekteydi. 

    İki tablo birleştirilirken ikinci tablodaki tüm kayıtların getirilmesi ve birinci tablodan ise birleştirme şartına uygun olan kayıtların getirilmesi istenirse sağ dış birleştirme (“Right Outer Join”) kullanılır

    Sağ birleştirmede birinci tablodan birleştirme şartına uygun olmayan satırlar için birinci tablonun sütun sayısı adedinceNulldeğeri döner. 

      Birleştirme sonucunda ise tabloların kullanım sırası dikkate alınır. 

     Yani birinci tablodaki veriler sol tarafa, ikinci tablodan gelen veriler ise sağ tarafa yerleşmiş şekilde gelir.


Sol Dış Birleştirme (Left Outer Join)

      Eşiti olmayan birleştirmede iki tablodan birincisi sol (left), ikincisi ise sağ (right) tablo olarak isimlendirildiğini düşünebilirsiniz. 

     İki tablo birleştirilirken birinci tablodaki (sol tablo) tüm kayıtların getirilmesi ikinci tablodan (sağ) ise birleştirme şartına uyan kayıtların getirilmesi istenirse “Left Outer Join” kullanılır.

    Böylece ikinci tabloda karşılığı olmayan kayıtlar için ikinci tablodaki sütun sayısı kadar “Null” değeri döner. 

    Birleştirme sonucunda birinci tablodaki veriler sonuç listesinin sol tarafına ikinci tablodan gelen veriler ise sağ tarafına yerleşmektedir.

Tüm Dış Birleştirme (Full Outer Join)

 Dış birleştirme kapsamında göreceğimiz son yapı tüm dış birleştirme (“Full Outer Join”). 

    Tüm dış birleştirme sonucu oluşan tablo için “Left Join” ve “Right Join” in birleşmesinden oluşan bir tablodur diyebiliriz. 
    
    Full Outer Join ile iki tablo birleştirildiğinde “Left Join” ya da “Right Join” ayrımı yapılmaz ve birleştirmeye dâhil olan tablolardaki tüm kayıtlar getirilir

Hiç yorum yok