SQL JOIN
- Önceki Sayfa SQL Aliases
- Sonraki Sayfa SQL Inner 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
- Önceki Sayfa SQL Aliases
- Sonraki Sayfa SQL Inner Join