MercanSoftYazılım Teknolojileri Günlüğü
19 May 2025

SQL JOIN Komutu: Veritabanlarında İlişkili Verileri Birleştirmek

SQL JOIN Komutu

herkese selamm.. Veritabanlarında çoğu zaman veriler birden fazla tabloya dağıtılmıştır. Bu nedenle, anlamlı sonuçlar elde edebilmek için bu tablolar arasında ilişki kurmak ve verileri bir araya getirmek gerekir. SQL dilinde bu işlemi gerçekleştirmek için kullanılan en yaygın komutlardan biri JOIN komutudur.

Bu makalede, SQL’de JOIN komutunun ne olduğunu, hangi türlerinin bulunduğunu ve her birini örneklerle nasıl kullanabileceğimizi inceleyeceğiz.

JOIN Nedir?

JOIN, iki veya daha fazla tabloyu ortak bir sütun üzerinden birleştirmek için kullanılır. Genellikle tablolar arasındaki ilişki, bir tablodaki bir sütunun diğer tablodaki bir sütuna karşılık gelmesiyle kurulur.

Örneğin:

  • Customers tablosunda müşteri bilgileri,

  • Orders tablosunda ise sipariş bilgileri bulunabilir.

Her iki tabloda da müşteri ID’si (CustomerID) bulunduğundan, bu sütunlar üzerinden ilişki kurarak bir müşterinin hangi siparişleri verdiğini görebiliriz.

JOIN Türleri

SQL’de temel olarak dört tür JOIN bulunur:

  1. INNER JOIN

  2. LEFT JOIN (veya LEFT OUTER JOIN)

  3. RIGHT JOIN (veya RIGHT OUTER JOIN)

  4. FULL JOIN (veya FULL OUTER JOIN)

1. INNER JOIN

INNER JOIN, iki tabloda da eşleşen kayıtları getirir. Yani, sadece her iki tabloda da ortak olan veriler döndürülür.

Örnek:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Bu sorgu, hem Customers hem de Orders tablolarında eşleşen CustomerID olan kayıtları getirir. Sonuç olarak yalnızca siparişi olan müşteriler listelenir.

2. LEFT JOIN

LEFT JOIN, sol tablodaki tüm kayıtları getirir ve sağ tabloda eşleşme yoksa NULL değer gösterir.

Örnek:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Bu sorgu, tüm müşterileri listeler. Eğer bir müşteri hiç sipariş vermemişse, OrderDate sütunu NULL olacaktır.

3. RIGHT JOIN

RIGHT JOIN, sağ tablodaki tüm kayıtları getirir. Sol tabloda eşleşme yoksa, NULL gösterilir.

Örnek:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Bu sorgu, tüm siparişleri listeler. Eğer bir siparişe ait müşteri bilgisi yoksa (örneğin müşteri kaydı silinmişse), müşteri ismi NULL olur.

4. FULL JOIN

FULL JOIN, her iki tablodaki tüm verileri getirir. Eşleşme yoksa NULL gösterilir. Ancak bu JOIN türü bazı veritabanlarında (örneğin MySQL) doğrudan desteklenmez. Genellikle UNION ile benzetilir.

Örnek:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
FULL JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Bu sorgu, her iki tabloda bulunan tüm kayıtları döndürür. Eşleşmeyen kayıtlar için eksik taraf NULL olur.

Not: FULL JOIN, bazı SQL motorlarında desteklenmediği için alternatif çözümler gerekebilir:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
UNION
SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Gerçek Hayat Örneği

Farz edelim ki bir e-ticaret sistemimiz var ve iki tablomuz şöyle:

Tablo: Customers

CustomerID CustomerName
1 Ali
2 Ayşe
3 Mehmet

Tablo: Orders

OrderID CustomerID OrderDate
101 1 2024-01-01
102 2 2024-01-02

Bu tablolar üzerinden INNER JOIN kullanırsak:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Sonuç:

CustomerName OrderDate
Ali 2024-01-01
Ayşe 2024-01-02

Mehmet’in hiç siparişi olmadığından listede görünmez.

Eğer LEFT JOIN kullanırsak:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Sonuç:

CustomerName OrderDate
Ali 2024-01-01
Ayşe 2024-01-02
Mehmet NULL

JOIN Kullanırken Dikkat Edilmesi Gerekenler

  1. İlişkili sütunların doğru tanımlanması gerekir. Yanlış sütunlar üzerinden JOIN yapmak hatalı sonuçlara yol açabilir.

  2. Performans sorunları olabilir. Büyük tablolarda JOIN işlemleri yavaş çalışabilir. Bu nedenle uygun indeksleme önemlidir.

  3. Aliasing (takma ad) kullanmak sorguları okunabilir kılar.

Örnek:

SELECT c.CustomerName, o.OrderDate
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID;

SQL’de JOIN komutu, birden fazla tabloyu ilişkilendirmek ve analiz edilebilir anlamlı veri setleri oluşturmak için vazgeçilmezdir. INNER JOIN, LEFT JOIN, RIGHT JOIN ve FULL JOIN gibi farklı türleri ile çeşitli senaryolara uygun sorgular oluşturabilirsiniz. Özellikle ilişkisel veritabanlarında çalışırken JOIN komutlarını doğru anlamak ve kullanmak, daha güçlü ve verimli sorgular yazmanızı sağlar.

JOIN komutunu kullanarak siz de veritabanı tablolarını bir araya getirebilir ve daha zengin analizler yapabilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir