SQL Server’da Join Tipleri

Herkese merhaba,

Bu yazıda SQL Server’da Join Tipleri hakkında bilgi vereceğim.

SQL Server’da Join yapıları en çok kullanılan yapılardır.

İlk olarak Join nedir ona değinelim. Join, birden fazla tabloyu birbirine tablolardaki eş kolonlar aracılığıyla eşitleyerek bağlama işlemidir. Kullandığımız Join çeşidine göre gelen sonuç kümesi değişir.

Aşağıda gördüğünüz görsel Join işlemi hafızanızda bir şeyler oluşturacaktır.

SQL Server'da Join Tipleri

Join işlemi görüldüğü üzere Matematikte görmüş olduğunuz kümeler konusu gibidir. Aslında bir bakımdan da öyledir. İki dataya ait kesişim, birleşim, fark vs gibi çeşitli işlemleri Join yapılarını kullanarak çözeriz.

Aşağıda yazdığım liste çok kullanılan Join yapılarıdır.

1-) JOIN ya da INNER JOIN (İkisi de aynı şeydir)
2-) LEFT JOIN ya da LEFT OUTER JOIN (İkisi de aynı şeydir)
3-) RIGHT JOIN ya da RIGHT OUTER JOIN (İkisi de aynı şeydir)
4-) FULL JOIN ya da FULL OUTER JOIN (İkisi de aynı şeydir)
5-) CROSS JOIN

Yukarıdaki Join yapılarını anlamak için aşağıdaki tabloları oluşturup içlerine verileri ekleyelim.

--Tabloların oluşturulması

CREATE TABLE Sehirler
(
    ID INT,
    SehirIsmi VARCHAR(100)
);

CREATE TABLE Yiyecekler
(
    ID INT,
    SehirID INT,
    YiyecekAdi VARCHAR(100)
);

--Verilerin tabloya eklenmesi

INSERT INTO Sehirler
(
    ID,
    SehirIsmi
)
VALUES
(1, 'Adana');
INSERT INTO Sehirler
(
    ID,
    SehirIsmi
)
VALUES
(42, 'Konya');
INSERT INTO Sehirler
(
    ID,
    SehirIsmi
)
VALUES
(3, 'Afyon');
INSERT INTO Sehirler
(
    ID,
    SehirIsmi
)
VALUES
(2, 'Adıyaman');
INSERT INTO Sehirler
(
    ID,
    SehirIsmi
)
VALUES
(16, 'Bursa');

INSERT INTO Yiyecekler
(
    ID,
    SehirID,
    YiyecekAdi
)
VALUES
(1, 1, 'Adana Kebap');
INSERT INTO Yiyecekler
(
    ID,
    SehirID,
    YiyecekAdi
)
VALUES
(2, 42, 'Etli Ekmek');
INSERT INTO Yiyecekler
(
    ID,
    SehirID,
    YiyecekAdi
)
VALUES
(3, 3, 'Kaymak');
INSERT INTO Yiyecekler
(
    ID,
    SehirID,
    YiyecekAdi
)
VALUES
(4, 2, 'Çiğ Köfte');
INSERT INTO Yiyecekler
(
    ID,
    SehirID,
    YiyecekAdi
)
VALUES
(5, 75, 'Ayran Aşı');

JOIN ya da INNER JOIN: Kısacak iki tablodaki ortak kayıtları getirir. Sehirler tablosundaki ID kolonu ile Yiyecekler tablosundaki SehirID kolonu eşit olan kayıtları getir diyerek hangi yiyeceğin hangi şehre ait olduğunu gösteren bir sonuç elde edelim.

SELECT SehirIsmi,
       YiyecekAdi
FROM dbo.Sehirler
    INNER JOIN dbo.Yiyecekler
        ON Yiyecekler.SehirID = Sehirler.ID;

SQL Server'da Join Tipleri

Görüldüğü üzere Bursa’ya ait herhangi bir veri gelmedi çünkü karşılığında herhangi bir yiyecek ismi yok. INNER JOIN ortak OLAN verileri getirir.

LEFT JOIN ya da LEFT OUTER JOIN: İlk tablodaki kayıtlar tamamen listelenir. Eğer ilk tablodaki kaydın karşılığı ikinci tabloda yoksa ikinci tablodaki değeri NULL olarak döner.

SELECT SehirIsmi,
       YiyecekAdi
FROM dbo.Sehirler
    LEFT  JOIN dbo.Yiyecekler
        ON Yiyecekler.SehirID = Sehirler.ID;

SQL Server'da Join Tipleri

Görüldüğü üzere Bursa’ya ait veri geldi ama Bursa’nın karşılığı olan yiyecek ismi dediğimiz gibi NULL olarak gözüktü çünkü karşılığında herhangi bir yiyecek ismi yok.

RIGHT JOIN ya da RIGHT OUTER JOIN: İkinci tablodaki kayıtlar tamamen listelenir. Eğer ikinci tablodaki kaydın karşılığı ilk tabloda yoksa ilk tablodaki değer NULL olarak döner. Kısaca LEFT JOIN’in tam tersidir diyebiliriz.

SELECT SehirIsmi,
       YiyecekAdi
FROM dbo.Sehirler
    RIGHT  JOIN dbo.Yiyecekler
        ON Yiyecekler.SehirID = Sehirler.ID;

SQL Server'da Join Tipleri

Görüldüğü üzere Ayran Aşı’na ait veri geldi ama Ayran Aşı’nın karşılığı olan şehir ismi dediğimiz gibi NULL olarak gözüktü çünkü karşılığında herhangi bir şehir ismi yok.

FULL JOIN ya da FULL OUTER JOIN: LEFT OUTER ve RIGHT OUTER JOIN’in birleştirilmiş hali gibidir. İki tablodaki tüm kayıtlar da döner. Fakat karşılığı olmayan kolonlar NULL olarak döner.

SELECT SehirIsmi,
       YiyecekAdi
FROM dbo.Sehirler
    FULL  JOIN dbo.Yiyecekler
        ON Yiyecekler.SehirID = Sehirler.ID;

SQL Server'da Join Tipleri

Görüldüğü üzere her iki tabloya ait tüm veriler geldi. Karşılıkları olmayan alanlar NULL olarak geldi.

CROSS JOIN: Tabloların kartezyen çarpımını verir. Yani soldaki tablodaki her satıra karşılık olarak sağdaki tablonun tüm satırlarını döndürür.

SELECT SehirIsmi,
       YiyecekAdi
FROM dbo.Sehirler
    CROSS  JOIN dbo.Yiyecekler

SQL Server'da Join Tipleri

Eğer CROSS JOIN’in WHERE koşuluna INNER JOIN’deki ON ifadesine yazdığımız gibi eşitleme işlemi yaparsak INNER JOIN’deki gibi çalışacaktır ve aynı sonucu döndürecektir.

SELECT SehirIsmi,
       YiyecekAdi
FROM dbo.Sehirler
    CROSS  JOIN dbo.Yiyecekler
  WHERE Yiyecekler.SehirID = Sehirler.ID;

SQL Server'da Join Tipleri

Görüldüğü üzere SQL Server’da Join tiplerini görmüş olduk.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

471 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!