MySQLVeritabanıWebYazılım

SQL Join İşlemleri

sqlkapak

Merhaba arkadaşlar,

Bugün sizlere SQL JOIN işlemlerinden bahsedeceğim. Veritabanı işlemleri içerisinde hayat kurtaran join işlemleridir. Birden fazla tabloyu birbirine bağlamaya yaramaktadır. Örnek vermek gerekirse personel tablosu ve bu personellerin türlerini içeren tablo olsun. Bu personel tablosu içerisinde türler ID’ler ile tutulmaktadır.

Personel Tablosu :

ID PersonelNumarasi PersonelAdi PersonelTur
1 000001 Oğuzhan ÖZDEMİR 1
2 000002 Batuhan ÖZDEMİR 2
3 000003 Ahmet ÖZDEMİR NULL

Personel Türü :

ID TurAdi
1 Yazılım Mühendisi
2 Proje Yöneticisi
3 Tasarım Uzmanı

Bu tablolar örnek olması açısından incelenebilir. Personel tablosundaki tüm veriler çekilmek istendiğinde türün ayrıntısı da join işlemi ile bulunabilir.

Karmaşık tablolarda yapılan sorgular, istenen içeriğe göre değişiklik göstermektedir. Şimdi bunlardan bahsedelim. (Görsellerde gösterilen kümeler tabloları temsil etmektedir.)

sql_join_1

1 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
LEFT JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
sorgusu ile çalıştırıldığında A tablosundaki(personel) tüm verilerin tür karşılığı olmasa bile getirilmesini sağlar.

2 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
RIGHT JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
sorgusu ile çalıştırıldığında B tablosundaki(personelturu) tüm verilerin tür karşılığı olmasa bile getirilmesini sağlar.

3 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
INNER JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
sorgusu ile çalıştırıldığında A(personel) ve B tablosundaki(personelturu) tüm verilerin karşılıklı olarak uyuştuğu satırlar getirilir.

sql_join_2

4 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
LEFT JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
WHERE tur.ID IS NULL
sorgusu ile çalıştırıldığında A(personel) tablosundaki veriler içerisinde karşılığı B(personelturu) tablosunda bulunmayan veriler getirilir. (Yani personel türü bilgisi bulunmayan personeller listelenir.)

5 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
RIGHT JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
WHERE personel.ID IS NULL
sorgusu ile çalıştırıldığında B(personelturu) tablosundaki veriler içerisinde karşılığı A(personel) tablosunda bulunmayan veriler getirilir. (Yani kendisine ait personel bulunmayan personel türlerini getirir.)
sql_join_3

6 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
FULL OUTER JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
sorgusu ile çalıştırıldığında tablolardaki tüm satırlar getirilir.

7 Numaralı işlemde A ve B tabloları;

SELECT * FROM personel as personel
FULL OUTER JOIN personelturu as tur
ON tur.ID = personel.PersonelTur
WHERE personel.ID IS NULL OR tur.ID IS NULL
sorgusu ile çalıştırıldığında tablolardaki tüm karşılığı olmayan satırlar getirilir.
Arkadaşlar genel olarak join işlemlerinden bahsettik. Bir sonraki yazımızda görüşmek üzere.. 🙂

Oğuzhan ÖZDEMİR

19 Ocak 1991 Bursa doğumlu Bilgisayar Mühendisiyim. Codeigniter, Kotlin, Android, MySQL ve iOS uygulamalar geliştiriyorum. Web kısmında CSS, HTML, JavaScript, jQuery konularına hakimim. Mayıs 2017 tarihinde Maltepe/İstanbul oradan da Çorlu /Tekirdağ'a giderek askerlik görevimi tamamladım. 2018 Mayıs ayında Bursa'da Durmazlar Makina Sanayi ve Tic. A.Ş. firmasında Bilgi Teknolojileri Uzman Yardımcısı olarak işe başladım. İletişim: ogzhnozdmr@gmail.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.