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
id | isim | soyisim | il | ilce |
---|---|---|---|---|
1 | Burak | Tufan | Mersin | Erdemli |
2 | Büşra | Ada | Adana | Pozantı |
3 | Ahmet | Mersin | Mersin | Pozcu |
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;
Ş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;
Ş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;
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
Comments