24/11/2015 14

SQL ile JOIN ifadeleri -- (Inner,Full,Left,Right)

Herkese Merhaba. Bu yazıda sizlere SQL dilinde Inner Join, Left Join, Right Jon ve Full Join ifadelerini anlaacağım. SQL dilinde sıkça ihtiyaç duyabileceğimiz ifadelerden olan bu ifadeleri öğreneceğiz.

INNER JOIN İFADESİ

SQL INNER JOIN Keyword Inner Join ifadesi ile SQL veritabanından istediğimiz kadar kolonu seçebiliriz. Seçim işlemini ise iki tane tabloyu tek sorguda birleştirerek kullanabilmemizi sağlar. Yani iki tablodan veri çekme için iki sorgu yerine tek sorgu içinde hallediyoruz.

Söz Dizimi Nasıldır?


SELECT kolon_adlari
FROM tablo1
INNER JOIN tablo2
ON tablo1.kolon_adi=tablo2.kolon_adi;

Şunuda Hatırlatmakta fayda var : inner join ve Join ifadeleri aynı işlevi görür. İkiside iki tane tablonun ortak alanda kullanılmasını sağlar.

Şimdi Bir Örnek Yapalım

Aşağıdaki Örnek tabloyu kullanalım. Aşağıdaki tablo kullanıcı tablosu olsun

kullanicilar tablosu
id isim soyisim  il ilce
1 Burak Tufan Mersin Erdemli
2 Büşra Ada Adana Pozantı
3 Ahmet Mersin Mersin Pozcu
Aşağıdaki tablo yukarıdaki tablodaki kulanıcıların bilgileri olsun. bilgileri tablosu
id kullanici_id calisan_id giris_tarihi
10308 2 7 19.08.2001
10309 37 3 25.10.2002
10310 77 8 01.01.2011

SQL INNER JOIN Example


SELECT kullanicilar.isim, bilgiler.kullanici_id
FROM kullanicilar
INNER JOIN bilgiler
ON kullanicilar.id=bilgiler.kullanici_id
ORDER BY kullanicilar.isim;

Bu komut ile kullanicilar tablosundaki id ile gidip bilgiler tablosundaki bir bilgiyi tek sorgu da çekebiliyoruz.

INNER JOIN ile iki tabloda eşit olan bütün kolonları çekebiliriz. Fakat veri çağırma tablosunda yazılmadığı için çıktı olarak gösterilmez.

LEFT JOIN İFADESİ

LEFT JOIN ifadesi bütün verilerini soldaki tablodaki verileri sağdaki tablo ile eşleyerek döndürür. Soldaki tablo derken burada ilk yazdığımız; sağdaki tablo ise ikinci yazdığımız tablodur. Hiçbir eşleşme yoksa sağ tablodaki veriler NULL olarak döner.

Söz Dizimine bakalım:


SELECT kolon_adlari
FROM tablo1
LEFT JOIN tablo2
ON tablo1.kolon_adi=tablo2.kolon_adi;
LEFT JOIN yerine LEFT OUTER JOIN de kullanılabilir. Bunların ikiside aynı işlevi görür. Kullanım şekilleri aynıdır.

Şimdi yukarıda yazdığımız tabloyu kullanarak bir örnek yapalım.


SELECT kullanicilar.isim, bilgiler.kullanici_id
FROM kullanicilar
LEFT JOIN bilgiler
ON kullanicilar.id=bilgiler.kullanici_id
ORDER BY kullanicilar.isim;

Yukarıdaki şekilde LEFT JOIN sorgusu çalışır. Bu sorgunun çıktısını görmeniz için sorguyu sizin çalıştırmanızı tavsiye ettiğim için ben sonucu buraya yazmadım.

LEFT JOIN ifadesi ile veritabanında çağırdığımız verileri ikinci yazdığımız tablo üzerindeki sonuçlarını görmeyiz. Yani bir nevii ikinci tablou pasife almış oluruz. Burası yanlış anlaşılmasın pasiftenkastım verileri onun üzerinde değilde birinci tablo üzerinde gösteririz.

RIGHT JOIN IFADESİ

RIGHT JOIN ifadeside LEFT JOIN ifadesinin tam tersi biçimde çalışır. Bu şekilde dönen bütün değerler sağ taraftaki yani ikinci yazdığımız tablodan gelir. Burada da sol tabloda eşleşme yoksa eğer bize NULL değer döndürür. Şimdi Right Join ifadesinin söz dizimine bakalım :

Right Join Söz Dizimi :


SELECT kolon_adlari
FROM tablo1
RIGHT JOIN tablo2
ON tablo1.kolon_adi=tablo2.kolon_adi;
Buradada şunu ifade etmek isterim ki : RIGHT JOIN ile RIGHT OUTER JOIN aynı işlevi görür. RIGHT JOIN yazmak yerine RIGHT OUTER JOIN de yazılabilir.

Şimdi Bir örnek Yapalım ve çalışma mantığını anlayalım.


SELECT bilgiler.kullanici_id, kullanicilar.isim
FROM bilgiler
RIGHT JOIN kullanicilar
ON bilgiler.kullanici_id=kullanicilar.id
ORDER BY bilgiler.kullanici_id;

Yine kodların çıktısını vermeyeceğim. siz deneyip görürseniz daha kalıcı olur. RIGHT JOIN ifadesi ile veritabanında çağırdığımız verileri ilk yazdığımız tablo üzerindeki sonuçlarını görmeyiz. Yani bir nevii ilk tablou pasife almış oluruz. Burası yanlış anlaşılmasın pasiften kastım verileri onun üzerinde değilde ikinci tablo üzerinde gösteririz.

FULL JOIN İFADESİ

Bu ifade ile sorguya girilen tabloların ikisindeki bütün alanları döndüren ifadedir. Yani LEFT JOIN ve RIGHT JOIN ifadelerinin birleştirilmiş halidir. Şimdi FULL JOIN ifadesinin söz dizimine bakalım :

Söz Dizimi :


SELECT kolon_adlari
FROM tablo1
FULL OUTER JOIN tablo2
ON tablo1.kolon_adi=tablo2.kolon_adi;
FULL OUTER JOIN ve FULL JOIN aynı anlama gelir. yani ikiside aynı işlevi görür. Bunların ikiside ay amaçtadır.

Şimdi FULL JOIN ile ilgili bir örnek yapalım :


SELECT kullanicilar.isim, bilgiler.kullanici_id
FROM kullanicilar
FULL OUTER JOIN bilgiler
ON kullanicilar.id=bilgiler.kullanici_id
ORDER BY kullanicilar.isim;
Şeklindeki sorgu ile bir çalışma örneği yazabiliriz. Yine sonucu yazmıyorum sizler çalıştırırsanız çalışma mantığını daha iyi görebilirsiniz.

FULL OUTER JOIN veya FULL JOIN ikiside aynıdır. Bunlar sorguya girilen her iki tablodaki verileri karşılaştırır ve bütün sonuçları getirir. Yani diğerleri gibi sadece bir tabloyu kontrol etmez her iki tabloyu da kontrol edip onlardaki verileri eşleyip ona göre sonuç getirir.

Şimdi Birde özet geçelim ve yazımızı bitirelim arkadaşlar

INNER JOIN : Her iki tablodaki verilerin ortak olanını getirir.

LEFT JOIN : Soldaki tablodan verileri getirir.

RIGHT JOIN : Sağdaki tablodan verileri getirir.

FULL JOIN : Her iki tablodaki verileri getirir.

Bu yazımızda bu kadar -- Takipte kalın

İyi Çalışmalar

Burak hamdi Tufan


Tags

Share this Post



Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

    There is no comment. Be the owner of first comment...