14 Şubat 2014 Cuma

SQL-JOINLER

Merhaba arkadaşlar bu yazımda size joinleri anlatacağım. Join çeşitlerini daha iyi kavrayabilmemiz adına küme şekillerine de yer vereceğim.

Veritabanı tasarımı yaparken veri tekrarını önlemek adına birçok tablo oluşturur ve bu tabloları birbirleriyle ilişkisel hale getiririz.Tablolarımızı yabancı anahtarlarla (foreign key) birbirlerine bağlarız.Örneğin,


 Ben şirketteki çalışanların hangi bölümde çalıştıklarını görmek istiyorum.
Sadece select PersonelAdiSoyadi,BolumNo from Personels sorgusunu yazarsam karşıma sadece çalışanların adı soyadı ve bölüm numaraları gelir böylelikle ben hangi bölümde çalıştıklarını göremem. 
Eğer select BolumNo,BolumAdi from Bolum diye sorgu yazarsam bu seferde çalışanların isimlerini göremem.
Ayrı ayrı sorgular yazmak yerine bu iki sorguyu tek bir sorguda yazarak istediğim işlemi gerçekleştirebilirim.

Tablo birleştirme işlemini iki farklı yöntemle yapabiliriz.

1-WHERE ile sorgu koşulu belirleyerek
2-JOIN komutunu kullanarak

WHERE ile sorgu koşulu belirleyerek çalışanların hangi bölümde çalıştıklarını gösteren bir sorgu yazacağım.

Select p.PersonelAdiSoyadi,b.BolumAdi  from Personels p ,Bolum b
Where p.BolumNo = b.BolumNo

JOIN komutu kullanarak aynı sorguyu yazalım.

Öncelikle Join ifadeleri 4'e ayrılır.

  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • FULL JOIN

INNER JOIN:  Sadece her iki tabloda da olan verileri gösterir.Yani iki tablo için de boş ( NULL) verileri temizler ve göstermez.

                                       Küme ifade olarak inner join kesişimi ifade etmektedir.


                         
  select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
  inner join Bolum b
  on p.BolumNo = b.BolumNo


Inner joinle personels ve bolum tablolarımızı birleştirip çalışanların bölüm hatta hangi şehirde çalıştıklarını öğrendik.

LEFT JOIN: İlk tablo (Personels) için boş olan verileri de göstermemizi sağlar.


P left join B kümelerde sol tarafta olan küme demektir. P tablosundaki veriler koşulsuz gelir, B tablosundakiler eşleşebildiklerini getirir eşlemediklerini NULL olarak getirir.
   
                     
select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
left join Bolum b
on p.BolumNo = b.BolumNo



RIGHT JOIN: İkinci (Bolum) tablodaki boş olan verileri de göstermemizi sağlar. 

P right join B kümelerde sağ tarafta olan küme demektir.B tablosundaki veriler koşulsuz gelir, P tablosundakiler eşleşebildiklerini getirir eşlemediklerini NULL olarak getirir.


select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
right join Bolum b
on p.BolumNo = b.BolumNo



FULL JOIN: İki tablo içinde boş olan verileri gösterir.

P full join B kümelerde birleşime karşılık gelir.Her iki kümedeki tüm elemanları getirir.Eşleştirebildiklerine  ilgili tablolardaki verilere, eşleştiremediklerini NULL olarak getirir.

select p.PersonelAdiSoyadi,b.BolumAdi,b.Sehir from Personels p
full join Bolum b
on p.BolumNo = b.BolumNo



İşimize yaracak olan join çeşitlerini anlatmaya çalıştım umarım anlaşılır olmuştur görüşmek üzere..



                       







2 yorum: