INNER JOIN, iki ayrı tabloyu ortak bir kolon (genellikle bir ID) üzerinden birleştirmenizi sağlar. Excel'deki VLOOKUP mantığına benzetebilirsiniz: bir tablodaki bir değere karşılık, başka bir tablodan ilgili bilgiyi çekip yan yana getirir.
Problem: Bilgi İki Ayrı Tabloda
Ürünler tablosunda ürünün hangi tedarikçiden geldiğine dair sadece bir TedarikçiID var — tedarikçinin adı veya ülkesi gibi bilgiler ise ayrı bir Tedarikçiler tablosunda duruyor. İki tablonun da ortak noktası: TedarikçiID kolonu.
INNER JOIN ile Birleştirme
SELECT [Ürün Adı], Tedarikçiler.Ülke
FROM Ürünler
INNER JOIN Tedarikçiler
ON Ürünler.TedarikçiID = Tedarikçiler.TedarikçiID;
Bu sorgu, her ürünün yanına — TedarikçiID eşleşmesi üzerinden — tedarikçisinin ülkesini getirir.
Neden Tablo Adı Belirtmem Gerekti?
TedarikçiID kolonu her iki tabloda da var. SELECT TedarikçiID yazarsanız SQL Server hangi tablodaki TedarikçiID'yi kastettiğinizi anlayamaz ve hata verir. Bu belirsizliği gidermek için Tablo.Kolon şeklinde (Ürünler.TedarikçiID gibi) belirtmeniz gerekir. Sadece bir tabloda bulunan kolonlar için (ör. Ürün Adı) bu zorunlu değildir.
Sırada Ne Var?
JOIN işlemlerinin arkasındaki mantığı tam anlamak için sırada PRIMARY KEY ve FOREIGN KEY kavramları var.