SQL JOIN İşlemleri: Veritabanlarında Tablo Birleştirme Rehberi (2026)
Bu rehberde, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, SELF JOIN ve CROSS JOIN türlerini gerçek dünya senaryolarıyla öğreneceksiniz.
SQL JOIN Nedir ve Neden Gerekli?
Veritabanı tasarımında veriler genellikle normalizasyon kurallarına göre birden fazla tabloya bölünür. Örneğin, bir e-ticaret sisteminde müşteri bilgileri Customers tablosunda, siparişler Orders tablosunda tutulur. Bu tabloları birbirine bağlayan ortak bir sütun (genellikle birincil anahtar / yabancı anahtar ilişkisi) vardır. JOIN işlemi, bu ilişkiyi kullanarak tabloları birleştirir ve tek bir sorguda çok daha zengin sonuçlar elde etmenizi sağlar.
SELECT tablo1.sütun, tablo2.sütun
FROM tablo1
JOIN_TÜRÜ tablo2
ON tablo1.ortak_sütun = tablo2.ortak_sütun;
1. INNER JOIN (İç Birleştirme)
INNER JOIN, her iki tabloda da eşleşen kayıtları döndürür. Eşleşme olmayan satırlar sonuç kümesine dahil edilmez. Bu, en yaygın kullanılan JOIN türüdür.
INNER JOIN Örneği
Employees (Çalışanlar) ve Departments (Departmanlar) tablolarını düşünelim:
Employees Tablosu:
| id | name | dept_id |
|---|---|---|
| 1 | Ava | 10 |
| 2 | Ben | 20 |
| 3 | Cara | NULL |
Departments Tablosu:
| dept_id | dept_name |
|---|---|
| 10 | Satış |
| 20 | Mühendislik |
| 30 | Destek |
SELECT e.name, d.dept_name
FROM Employees e
INNER JOIN Departments d
ON e.dept_id = d.dept_id;
Sonuç:
| name | dept_name |
|---|---|
| Ava | Satış |
| Ben | Mühendislik |
dept_id değeri NULL ve eşleşen bir departman yok. Destek departmanı da dahil edilmedi çünkü o departmanda çalışan yok.
Kullanım Alanları:
- Sipariş veren müşterileri listeleme
- Çalışanların departman bilgilerini getirme
- Satılan ürünlerin kategori detaylarını görme
2. LEFT JOIN (Sol Dış Birleştirme)
LEFT JOIN (veya LEFT OUTER JOIN), sol tablodaki tüm kayıtları döndürür. Sağ tabloda eşleşme varsa getirir, yoksa ilgili sütunlar NULL olarak gelir.
LEFT JOIN Örneği
SELECT e.name, d.dept_name
FROM Employees e
LEFT JOIN Departments d
ON e.dept_id = d.dept_id;
Sonuç:
| name | dept_name |
|---|---|
| Ava | Satış |
| Ben | Mühendislik |
| Cara | NULL |
SELECT c.CustomerName
FROM Customers c
LEFT JOIN Orders o
ON c.CustomerID = o.CustomerID
WHERE o.OrderID IS NULL;
3. RIGHT JOIN (Sağ Dış Birleştirme)
RIGHT JOIN, sağ tablodaki tüm kayıtları döndürür ve sol tablodan eşleşenleri getirir. Eşleşme yoksa sol tablo sütunları NULL olur.
RIGHT JOIN Örneği
SELECT e.name, d.dept_name
FROM Employees e
RIGHT JOIN Departments d
ON e.dept_id = d.dept_id;
Sonuç:
| name | dept_name |
|---|---|
| Ava | Satış |
| Ben | Mühendislik |
| NULL | Destek |
4. FULL JOIN (Tam Dış Birleştirme)
FULL JOIN (veya FULL OUTER JOIN), her iki tablodaki tüm kayıtları döndürür. Eşleşme varsa birlikte getirir, eşleşme yoksa eksik taraf NULL olur.
SELECT e.name, d.dept_name
FROM Employees e
FULL JOIN Departments d
ON e.dept_id = d.dept_id;
Sonuç:
| name | dept_name |
|---|---|
| Ava | Satış |
| Ben | Mühendislik |
| Cara | NULL |
| NULL | Destek |
5. SELF JOIN (Kendi Kendine Birleştirme)
SELF JOIN, bir tablonun kendisiyle birleştirilmesidir. Aslında bir JOIN türünden ziyade, aynı tabloyu iki farklı takma isim (alias) kullanarak birleştirme tekniğidir. Hiyerarşik yapılar için idealdir.
SELF JOIN Örneği: Çalışan-Yönetici İlişkisi
Employees Tablosu:
| EmployeeID | EmployeeName | ManagerID |
|---|---|---|
| 1 | Ahmet | NULL |
| 2 | Ayşe | 1 |
| 3 | Mehmet | 1 |
| 4 | Zeynep | 2 |
SELECT
e.EmployeeName AS Calisan,
m.EmployeeName AS Yonetici
FROM Employees e
LEFT JOIN Employees m
ON e.ManagerID = m.EmployeeID;
Sonuç:
| Calisan | Yonetici |
|---|---|
| Ahmet | NULL |
| Ayşe | Ahmet |
| Mehmet | Ahmet |
| Zeynep | Ayşe |
6. CROSS JOIN (Çapraz Birleştirme)
CROSS JOIN, iki tablonun Kartezyen çarpımını döndürür. Yani sol tablodaki her satır, sağ tablodaki her satırla eşleştirilir.
SELECT e.name, d.dept_name
FROM Employees e
CROSS JOIN Departments d;
3 çalışan × 3 departman = 9 satır sonuç döner.
FROM tablo1, tablo2) CROSS JOIN ile aynıdır ancak okunabilirlik açısından explicit CROSS JOIN syntax tercih edilmelidir.
JOIN Türleri Karşılaştırma Tablosu
| JOIN Türü | Sol Tablo | Sağ Tablo | Eşleşmeyen Satırlar |
|---|---|---|---|
| INNER JOIN | Eşleşenler | Eşleşenler | Dahil edilmez |
| LEFT JOIN | Tümü | Eşleşenler | Sol tablo dahil, sağ NULL |
| RIGHT JOIN | Eşleşenler | Tümü | Sağ tablo dahil, sol NULL |
| FULL JOIN | Tümü | Tümü | Eksik taraf NULL |
| CROSS JOIN | Tümü | Tümü | Kombinasyon (Kartezyen) |
JOIN ve WHERE / GROUP BY Kombinasyonu
JOIN'ler tek başına kullanılmaz, genellikle filtreleme ve gruplama ile birlikte:
-- Her departmandaki çalışan sayısını bulma
SELECT d.dept_name, COUNT(e.id) AS calisan_sayisi
FROM Departments d
LEFT JOIN Employees e
ON d.dept_id = e.dept_id
GROUP BY d.dept_name;
Sık Yapılan Hatalar ve En İyi Uygulamalar
<- ON koşulunu unutmak: Her JOIN'de
ONifadesi ile birleştirme koşulunu belirtmelisiniz. - Ambiguous column hatası: Aynı isimde sütunlar varsa tablo takma ismi kullanın (
e.namegibi). - Performans: JOIN yapılan sütunlar üzerinde indeks oluşturmak sorgu hızını artırır.
- NULL kontrolü: OUTER JOIN kullandığınızda NULL değerlerini hesaba katın.
Sonuç
SQL JOIN işlemleri, ilişkisel veritabanlarının gücünü ortaya çıkaran temel yapı taşlarıdır. INNER JOIN ile eşleşen verileri, LEFT/RIGHT/FULL JOIN ile eksik verileri de kapsayan sonuçları, SELF JOIN ile hiyerarşik ilişkileri ve CROSS JOIN ile tüm kombinasyonları elde edebilirsiniz. Bu konuyu öğrendikten sonra, SQL'de gerçek dünya veri analizi ve raporlama senaryolarına hazır olacaksınız.

0 Yorumlar