0Pricing
SQL Interview Prep · Ders

INNER JOIN Satırları Nasıl Eşleştirir?

Her birleştirme sorusunu kolaylaştıran satır çiftleme zihinsel modelini öğrenin.

INNER JOIN Satırları Nasıl Eşleştirir?, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Mülakat Yapanların Sorduğu İlk Birleştirme

Bir mülakat yapan kişi "Bu iki tabloyu birleştirin" dediğinde, neredeyse her zaman INNER JOIN kastedilir. Bu, varsayılan birleştirmedir ve satırların nasıl eşleştirildiğini gerçekten anlayıp anlamadığınızı ortaya koyar.

Konunun tamamı tek bir cümleye indirgenebilir: INNER JOIN, iki tablodaki satırların mümkün olan her çiftini değerlendirir ve yalnızca ON koşulunu sağlayan çiftleri tutar. Eşleşme yoksa satır sonuçtan tamamen çıkar.

Bu zihinsel modeli benimseyin; daha zor her birleştirme sorusu kolaylaşacaktır.

Üzerinde Düşünülecek İki Tablo

Bu ders boyunca iki küçük tablo kullanacağız. customers, siparişleri kimin verdiğini tutar; orders ise her siparişi ve siparişin ait olduğu müşteriyi kaydeder.

  • customers(id, name)
  • orders(id, customer_id, amount)

Aralarındaki bağlantı orders.customer_id = customers.id ifadesidir. Bu eşitlik, tüm sonucun bağlı olduğu birleştirme koşuludur.

customers
id | name
1  | Ada
2  | Bob
3  | Cleo   -- no orders yet

orders
id | customer_id | amount
10 | 1           | 50
11 | 1           | 20
12 | 2           | 99

Temel INNER JOIN Sorgusu

Mülakat yapan kişinin görmek istediği temel sorgu şöyledir. Üç bölüme dikkat edin: iki tablo, satırları eşleştiren JOIN ... ON ve seçtiğiniz sütunlar.

INNER anahtar sözcüğü tüm önemli veritabanlarında isteğe bağlıdır. Yalın JOIN yazmak INNER JOIN anlamına gelir; ancak bunu açıkça yazmak niyeti gösterir ve kod incelemesinde belirsizliği önler.

SELECT c.name, o.amount
FROM customers AS c
INNER JOIN orders AS o
  ON o.customer_id = c.id;

Sonuç Nasıl Görünür

Sorguyu örnek verilerimiz üzerinde çalıştırdığınızda üç satır elde edersiniz. Ada'nın iki siparişi olduğundan iki kez görünür. Bob bir kez görünür.

Cleo yoktur. Eşleşen bir siparişi olmadığından INNER JOIN onu tamamen sonuçtan çıkarır. Eşleşmeyen satırların ortadan kaybolduğunu açıkça belirtmek, birleştirme mülakatında yapmanız gereken en önemli şeydir.

name | amount
Ada  | 50
Ada  | 20
Bob  | 99

Satır Eşleştirme Zihinsel Modeli

Veritabanının önce Kartezyen çarpımı oluşturduğunu düşünün: her müşteri her siparişle eşleştirilir. 3 müşteri ve 3 sipariş olduğunda 9 aday çift oluşur.

Ardından ON koşulunu uygular ve yalnızca koşulun doğru olduğu çiftleri tutar. 9 adaydan yalnızca 3'ü o.customer_id = c.id koşulunu geçer.

Performans açısından böyle düşünmezsiniz; ancak bu, "kaç satır geri gelir?" sorusunu yanıtlayan tam modeldir.

Aday Çiftleri İnceleme

İzleyelim. Her çiftten sonraki açıklama, koşulun doğru olup olmadığını gösterir.

Yalnızca üç TRUE satırı sonuçta kalır. Cleo'yu (id 3) içeren her çift başarısız olduğundan hiçbir katkısı olmaz.

-- customer.id vs order.customer_id
(Ada=1, ord10 cust=1)  -> TRUE  keep
(Ada=1, ord11 cust=1)  -> TRUE  keep
(Ada=1, ord12 cust=2)  -> FALSE
(Bob=2, ord10 cust=1)  -> FALSE
(Bob=2, ord12 cust=2)  -> TRUE  keep
(Cleo=3, anything)     -> FALSE (no order matches 3)

INNER JOIN Sıra Bağımsızdır

Sık sorulan bir soru şudur: İlk olarak hangi tabloyu yazdığınız önemli midir? INNER JOIN için hayır. ON koşulu simetrik olduğundan bu iki sorgu aynı satırları döndürür.

İyileştirici, sorguyu nasıl yazdığınızdan bağımsız olarak önce iki tablodan herhangi birini okumakta serbesttir. (Bu, ileride ele alınacak LEFT/RIGHT birleştirmeleri için geçerli DEĞİLDİR.)

-- These return the same rows
SELECT c.name, o.amount
FROM customers c JOIN orders o ON o.customer_id = c.id;

SELECT c.name, o.amount
FROM orders o JOIN customers c ON c.id = o.customer_id;

Tablo Takma Adları Beklenir

Mülakat yapanlar kısa ve anlaşılır takma adlar bekler. Ayrıntılı, tam nitelikli sürümü temiz, takma ad kullanılmış sürümle karşılaştırınız.

Her iki tabloda da aynı sütun adı bulunduğunda takma adlar zorunlu hâle gelir. Burada çıplak id seçmek belirsiz sütun hatasına yol açar; bu nedenle c.id veya o.id yazmalısınız.

-- verbose
SELECT customers.name, orders.amount
FROM customers JOIN orders
  ON orders.customer_id = customers.id;

-- aliased, preferred
SELECT c.name, o.amount
FROM customers c JOIN orders o
  ON o.customer_id = c.id;

Birden Fazla Sütuna Göre Birleştirme

ON koşulu tek bir eşitlikle sınırlı değildir. Bir ilişki birleşik anahtarla tanımlandığında koşulları AND ile birleştirirsiniz.

Burada bir fiyat ürün ve bölge başına geçerlidir; bu nedenle eşleşme için her iki sütunun da örtüşmesi gerekir. Mülakat yapanlar bunu, tek sütunlu birleştirmeleri yalnızca ezberlemediğinizi kontrol etmek için kullanır.

SELECT s.units, p.unit_price
FROM sales s
INNER JOIN price_list p
  ON p.product_id = s.product_id
 AND p.region     = s.region;

Eşitlik Dışı Birleştirmeler de Vardır

ON koşulu yalnızca = olmak zorunda değildir; herhangi bir mantıksal ifade olabilir. Eşitlik dışı birleştirme aralıkları veya eşitsizlikleri kullanır. Klasik bir örnek, bir puanı not aralığına yerleştirir.

Her puan, aralığı kendisini kapsayan tek bir not aralığıyla eşleşir. Birleştirmelerin eşitlikle sınırlı olmadığını belirtmek, deneyimli görünmenin hızlı bir yoludur.

SELECT s.student, g.grade
FROM scores s
INNER JOIN grades g
  ON s.points >= g.min_points
 AND s.points <= g.max_points;

Açık JOIN ile Virgüllü Birleştirme

Eski kodlarda ve bazı mülakat sorularında eski virgüllü birleştirme söz dizimiyle hâlâ karşılaşacaksınız. Bu iki sorgu INNER JOIN için eşdeğerdir.

Açık JOIN ... ON biçimini tercih ediniz. Virgül söz dizimini, WHERE'yi unutarak yanlışlıkla Kartezyen çarpıma dönüştürmek kolaydır; mülakat yapanların yakalamayı umduğu tam da bu hatadır.

-- old implicit join
SELECT c.name, o.amount
FROM customers c, orders o
WHERE o.customer_id = c.id;

-- modern explicit join (preferred)
SELECT c.name, o.amount
FROM customers c
JOIN orders o ON o.customer_id = c.id;

Hızlı Kontrol

INNER JOIN eşleştirmesinin temel fikrini sınayınız.

Özet: INNER JOIN Nasıl Eşleştirir

Mülakatta vurgulamanız gerekenler:

  • INNER JOIN yalnızca eşleşen çiftleri tutar; her iki taraftaki eşleşmemiş satırlar yok olur.
  • Zihinsel model: tüm aday çiftleri oluşturunuz, ardından ON koşulunun doğru olduğu çiftleri tutunuz.
  • İşlem sıralamadan bağımsızdır ve INNER anahtar sözcüğü isteğe bağlıdır.
  • ON, yalnızca tek bir = değil, birleşik anahtarları, aralıkları ve eşitsizlikleri de kullanabilir.
  • Belirsiz sütun ve yanlışlıkla oluşan Kartezyen çarpım hatalarından kaçınmak için açık JOIN ... ON biçimini ve anlaşılır takma adları kullanınız.

Sıkça Sorulan Sorular

“INNER JOIN Satırları Nasıl Eşleştirir?” dersi ücretsiz mi?

Evet — “INNER JOIN Satırları Nasıl Eşleştirir?” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“INNER JOIN Satırları Nasıl Eşleştirir?” dersinde ne öğreneceğim?

Her birleştirme sorusunu kolaylaştıran satır çiftleme zihinsel modelini öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“INNER JOIN Satırları Nasıl Eşleştirir?” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. INNER JOIN Satırları Nasıl Eşleştirir?
  2. Birleştirmelerde ON ve WHERE
  3. Birleştirme Yayılması ve Satır Çoğalması
  4. Üç veya Daha Fazla Tabloyu Birleştirme
← SQL Interview Prep Sayfasına Dön