İçeriğe geç
← Ana sayfa

Öğren · Dene · Üret

SQL · Tabloları birleştirme: INNER JOIN — videolu atölye

Adım adım Türkçe görsel rehber. Her bölümden sonra duraklat ve kendi ortamında dene.

← Bütün video rehberler

4:35 dk · Sessiz görsel anlatım · Duraklatıp kodu veya adımı kendin dene.

Ayrıntılı yazılı rehberi aç →Resmi kaynak ↗

Bölümler

Videoyu metin olarak oku

Tabloları birleştirme: INNER JOIN

İlişkisel veritabanlarının temel özelliği olan farklı tabloları ortak anahtar üzerinden birleştirmek.

Kavramı kur

İyi tasarlanmış bir veritabanında veriler tekrar etmez. Çalışan bilgileri calisanlar tablosunda, departman bilgileri departmanlar tablosunda tutulur. calisanlar tablosundaki departman_id sütunu departmanlar tablosunun id sütununa bağlanır (Foreign Key).

Neden böyle çalışıyor?

İki tabloyu tek bir sorguda birleştirmek için INNER JOIN kullanılır. ON ifadesi ile hangi sütunların birbirine eşitleneceği belirtilir: ON calisanlar.departman_id = departmanlar.id.

Çalışma sırası

INNER JOIN yalnızca her iki tabloda da karşılığı olan eşleşen satırları getirir. Sol tablodaki tüm satırları eşleşme olmasa da getirmek için LEFT JOIN kullanılır.

İkinci örnek · 1

FROM calisanlar ana tablo olarak seçilir. Kodun tamamı yazılı derste bulunur.

SELECT calisanlar.ad, departmanlar.departman_adi
FROM calisanlar
INNER JOIN departmanlar ON calisanlar.departman_id = departmanlar.id;

Beklenen sonucu oku

Sorgu iki tablonun birleşmiş halinden istenen sütunları döndürür.

Beklenen: ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı Mehmet | Kurumsal İletişim

Bir değeri sen değiştir

calisanlar ve projeler tablosunu INNER JOIN ile birleştirip kimin hangi projede çalıştığını listele. Tablo isimleri uzunsa AS c ve AS d şeklinde takma adlar (alias) tanımla.

Hata nereden gelir?

ON koşulunu yazmayı unutmak iki tablonun kartezyen çarpımını yaparak devasa ve anlamsız veri üretir.

Kendi çözümünü kur

LEFT JOIN kullanarak henüz bir projeye atanmamış çalışanları da listele. Tablo takma adı için: FROM calisanlar AS c INNER JOIN departmanlar AS d ON c.departman_id = d.id

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

SELECT c.ad, d.departman_adi
FROM calisanlar AS c
INNER JOIN departmanlar AS d ON c.departman_id = d.id;

Kendini kontrol et

INNER JOIN ile LEFT JOIN arasındaki temel fark nedir? Yanıt: INNER JOIN yalnızca her iki tabloda eşleşen kayıtları getirir; LEFT JOIN ise sol tablodaki tüm kayıtları, sağda eşleşme olmasa bile listeler.

Beklenen: ad | departman_adi Ahmet | Bilgi Teknolojileri Ayşe | Ürün Tasarımı Mehmet | Kurumsal İletişim

Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.