SQL'de Üç Tabloyu Birleştirin

Sql De Uc Tabloyu Birlestirin



İlişkisel veritabanlarında birden fazla tablodan veri alma görevi son derece yaygındır. Hedef sonuca bağlı olarak bu, birden fazla tablonun tek bir birimde birleştirilmesini ve elde edilen verilerin getirilmesini içerir.

Birleştirmeler söz konusu olduğunda çoğumuz çoğunlukla iki tablo ve benzeri limitlerle çalışırız. Ancak daha anlamlı bir veri düzeni ve içgörü elde etmek için üç tabloyu birleştirmenin gerekliliği yaygındır. Örneğin, filmlerin listesini, bunlara karşılık gelen kiralık envanteri ve gerçek kiralama ayrıntılarını nereden almak istediğinizi ele alalım. Filmler, envanter ve kiralama detayları gibi bu birimlerin her biri ayrı tablolarda yer almaktadır.

Bu eğitimde, SQL'de üç tabloyu birleştirmek için kullanabileceğiniz çeşitli birleştirmeler ve teknikler konusunda size yol göstereceğiz.







Gereksinimler:

Gösterim amacıyla MySQL sürüm 80'i ve Sakila örnek veritabanını kullanacağız. Devam etmek için Sakila veritabanını MySQL sunucunuza indirip kurabilirsiniz. Uygun olduğunu düşündüğünüz diğer veri kümelerini kullanmaktan çekinmeyin.



SQL'de Birleştirme Türleri

Birleşimlerin uygulanmasına geçmeden önce, SQL veritabanlarında bulunan çeşitli birleştirme türlerini tartışarak başlayalım.



İÇ BİRLEŞİM

İlk birleştirme türü INNER JOIN'dir. Bu birleştirme türü yalnızca her iki tabloda da eşleşen değer içeren satırları döndürür. Çok yaygın bir birleştirme türüdür ve iki tabloyu birleştirirken en basit olanıdır.





Sözdizimi aşağıdaki gibidir:

Sütunları SEÇİN

tablo1'den

İÇ BİRLEŞTİRME tablosu2 AÇIK tablo1.sütun_adı = tablo2.sütun_adı;

SOL YÖNDEN KATILIM

LEFT JOIN durumunda, sol tablodaki tüm satırları ve sağ tablodaki eşleşen satırları döndürür. Sağ tablodan eşleşen değer yoksa birleştirme, bunların yerine NULL değerlerini ekler.



Sözdizimi aşağıdaki gibidir:

Sütunları SEÇİN

tablo1'den

LEFT JOIN tablosu2 AÇIK tablo1.sütun_adı = tablo2.sütun_adı;

DOĞRU KATILIN

Tahmin edebileceğiniz gibi RIGHT JOIN, LEFT JOIN'in tam tersidir. Bu tür birleştirmeler, sağ tablodaki tüm satırları ve yalnızca sol tablodaki eşleşen satırları döndürür. Soldaki tabloda eşleşen satır yoksa birleştirme NULL değerlerini buna ekler.

RIGHT JOIN'in sözdizimi aşağıdadır:

Sütunları SEÇİN

tablo1'den

SAĞ KATILMA tablosu2 AÇIK tablo1.sütun_adı = tablo2.sütun_adı;

TAM DIŞ BİRLEŞİM

SQL veritabanlarında karşılaşacağınız bir sonraki birleştirme türü FULL OUTER JOIN'dir. Bu birleştirme türü, sağ veya sol tablolarda bir eşleşme olduğunda tüm satırları döndürür. Her ikisinde de eşleşen değer yoksa tablodaki eşleşmenin olmadığı sütunlar için NULL değerini döndürür.

Aşağıda FULL OUTER JOIN'in sözdizimi gösterilmektedir:

Sütunları SEÇİN

tablo1'den

TAM OUTER JOIN tablosu2 AÇIK tablo1.sütun_adı = tablo2.sütun_adı;

Tüm veritabanı motorlarının FULL OUTER JOINS'i desteklemediğini unutmamak gerekir. Bunu başarmak için diğer JOINS veya alt sorgu türleriyle çalışmanız gerekebilir.

Örnekler:

SQL'de üç tabloyu birleştirmek için bu tür birleştirmeleri nasıl kullanabileceğimize dair bazı örnekleri inceleyelim.

Örnek 1: INNER JOIN'i kullanma

INNER JOIN ile başlıyoruz. Bir film listesini, kiralık envanteri ve ilgili kiralama ayrıntılarını almak istediğimizi varsayalım.

Aşağıdaki örnekte gösterildiği gibi ilişkili tablolarda birden fazla INNER JOINS kullanabiliriz:

SEÇME

film başlığı,

envanter.inventory_id,

kiralama.rental_date

İTİBAREN

film

INNER JOIN envanteri AÇIK

film.film_id = envanter.film_id

INNER JOIN kiralama AÇIK

envanter.inventory_id = kiralama.inventory_id;

Verilen örnek sorguda film ve envanter tablolarını “film_id” sütununa göre birleştirerek başlıyoruz. Daha sonra ortaya çıkan seti alıp “inventory_id” sütununa göre kiralama tablosuyla birleştiriyoruz.

Bu, üç tabloyu temel bir INNER JOIN ile birleştirmemizi sağlar. Ortaya çıkan set aşağıdaki gibidir:

Örnek 2: INNER JOIN ve LEFT JOIN'i kullanma

Şimdi filmlerin listesini, varsa kiralık envanter listesini ve ilgili kiralama detaylarını istediğimizi varsayalım.

Ayrıca bir filmin kiralık envanteri olmasa bile onu yine de sonuca dahil ettiğimizden emin olmak istiyoruz. INNER JOIN ve LEFT JOIN'in devreye girdiği yer burasıdır.

Aşağıdaki örneği düşünün:

SEÇME

film başlığı,

envanter.inventory_id,

kiralama.rental_date

İTİBAREN

film

INNER JOIN envanteri AÇIK

film.film_id = envanter.film_id

LEFT JOIN kiralama AÇIK

envanter.inventory_id = kiralama.inventory_id;

Bu örnekte, mevcut envantere sahip başlıkları aldığımızdan emin olmak amacıyla film ve envanter tablosunu birleştirmek için INNER JOIN kullanıyoruz. Daha sonra, varsa kiralama ayrıntılarını almak üzere kiralama tablosuna katılmak için LEFT JOIN'i kullanırız ve kiralama geçmişi olmayan herhangi bir başlık için NULL'u kullanırız.

Ortaya çıkan set aşağıdaki gibidir:

Çözüm

Bu derste SQL'deki çeşitli JOINS türlerini, bunların nasıl çalıştığını ve bunları üç tabloyu birleştirmek için nasıl kullanabileceğimizi öğrendik.