SQL JOIN

SQL join, iki veya daha fazla tablodaki sütunlar arasındaki ilişkiye göre bu tablolardan veri sorgulamak için kullanılır.

Join ve Anahtar

Tam bir sonuç elde etmek için iki veya daha fazla tablodan sonuç almak gerekebilir. Bu durumda join işlemi gerçekleştirmemiz gerekecek.

Veritabanındaki tablolar birbirlerine anahtarlarla bağlanabilir. Anahtar (Primary Key), her satırın bu sütundaki değeri benzersiz olan bir sütundur. Tabloda, her anahtarın değeri benzersizdir. Bu, her tablodaki tüm verileri tekrar etmeden tablolar arasındaki verileri birbirine bağlamak amacıyla yapılır.

Aşağıdaki "Persons" tablosuna göz atın:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Lütfen dikkat edin, "Id_P" sütunu Persons tablosundaki anahtar sütundur. Bu, iki satırın aynı Id_P'ye sahip olamayacağı anlamına gelir. İki kişinin adı tamamen aynı olsa bile, Id_P onları ayırabilir.

Aşağıdaki "Orders" tablosuna göz atın:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

Lütfen dikkat edin, "Id_O" sütunu Orders tablosundaki anahtar sütundur, aynı zamanda "Orders" tablosundaki "Id_P" sütunu "Persons" tablosundaki kişileri referans almak için kullanılır, kişilerin doğru isimlerini kullanmak zorunda kalmadan.

Dikkat edin, "Id_P" sütunu yukarıdaki iki tabloyu birleştirir.

İki Tabloyu Referans Almak

İki tablodan veri almak için iki tabloyu referans alabiliriz:

Hangi ürünü kim sipariş etti ve ne sipariş etti?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

Sonuç Seti:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - Join Kullanımı

Yukarıdaki yöntemlerin yanı sıra, JOIN anahtar kelimesini kullanarak iki tablodan veri alabiliriz.

Eğer tüm insanların siparişlerini listelemek istiyorsak, aşağıdaki SELECT cümlesini kullanabiliriz:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

Sonuç Seti:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

Farklı SQL JOIN

Yukarıdaki örnekte kullandığımız INNER JOIN (iç bağlantı) dışında, diğer bazı bağlantı türlerini de kullanabiliriz.

Aşağıda kullanabileceğiniz JOIN türleri ve aralarındaki farklar listelenmiştir.

  • JOIN: Tabloda en az bir eşleşme varsa, satırları döndürür
  • LEFT JOIN: Sağ tabloda eşleşme yoksa bile, sol tablodan tüm satırları döndürür
  • RIGHT JOIN: Sol tabloda eşleşme yoksa bile, sağ tablodan tüm satırları döndürür
  • FULL JOIN: Bir tabloda eşleşme varsa, satırları döndürür