Ana içeriğe geç
Kesit SQL
Temel · Tabloları Birleştirme

INNER JOIN

İki tablonun eşleşen satırlarını birleştirmek.

Uygulamada aç, 9 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Eşleşenleri birleştir

INNER JOIN, ON koşulunu sağlayan satır çiftlerini birleştirir. Eşi olmayan satırlar sonuçta yer almaz.

SELECT o.order_id, o.order_date, c.first_name, c.last_name
FROM orders AS o
INNER JOIN customers AS c
        ON o.customer_id = c.customer_id
LIMIT 10;

Join'den sonra gruplama

Kategori bazında satılan adet:

SELECT p.category, SUM(oi.quantity) AS adet
FROM order_items oi
JOIN products p ON p.product_id = oi.product_id
GROUP BY p.category
ORDER BY adet DESC;

Eski usul yazım

Eski kodlarda FROM a, b WHERE a.id = b.a_id görebilirsin. Aynı sonucu verir ama birleştirme koşulunu WHERE'e karıştırdığı için okunması zordur ve koşul unutulursa her satırı her satırla eşleştirir. Açık JOIN ... ON yazımını tercih et.

USINGBirleştirilen sütunun adı iki tabloda aynıysa JOIN customers USING (customer_id) kısaltması kullanılabilir.

Derinleş: bir JOIN'i doğrulamak

Birleştirmeden sonra hep iki şeyi kontrol et: satır sayısı beklediğin gibi mi ve anahtar benzersiz mi? Siparişleri restoranlarla birleştirmek sipariş sayısını değiştirmemelidir, çünkü her siparişin tek bir restoranı vardır:

SELECT COUNT(*) AS siparis,
       (SELECT COUNT(*) FROM lk_orders o JOIN lk_restaurants r ON r.restaurant_id = o.restaurant_id) AS birlesik
FROM lk_orders;

İki sayı farklıysa ya eşleşmeyen satırlar düşmüştür (INNER JOIN eşi olmayanları atar) ya da “bir” sandığın taraf aslında “çok”tur.

Alıştırmalara geç (9)