Home / MAKALELER / Veri Tabanı / Join Çeşitleri ve Kullanımları

Join Çeşitleri ve Kullanımları

Isparta Pusula Akademi Oracle ekibinden arkadaşlarımızın yazdığı makaleleri sitemizde yayınlıyoruz.Özgüvenleri ve emekleri için teşekkür ediyoruz

 
İki ya da daha fazla tablonun birleştirilip tek bir tablo oluşturulması işlemine join denir.  Join işleminde bilinmesi gereken önemli nokta,  join işlemi yapıldıktan sonra birleştirilen tabloların içeriği değiştirilmez sadece o anki sonuç ekranına yansıtılır.
Not:  Aşağıdaki komutlar kullanarak örneklerin daha iyi anlaşılabilmesi için “calisan” ve “bolum” tabloları oluşturulmuş ve bazı bilgiler eklenmiştir.
CREATETABLE bolum
(
bolum_no NUMBER(4),
bolum_adi VARCHAR2(16)
);
CREATETABLE calisan
(
calisan_id NUMBER(4),
calisan_ad_soyad VARCHAR2(32),
bolum_no NUMBER(4)
);
insertinto bolum (bolum_no,bolum_adi)values( 1,’Bakım’);
insertinto bolum (bolum_no,bolum_adi)values( 2,’Tamir’);
insertinto bolum (bolum_no,bolum_adi)values( 3,’Boya’);
insertinto calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 1,’Ahmet Yanılmaz’,1);
insertinto calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 2,’Hasan Ülküm’,2);
insertinto calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 3,’Yasemin Aykanat’,4);
Bu işlemler sonucunda
j1
Cross Join
İlişkili olsun olmasın birleştirilecek olan tabloların tüm satırlarının listelenmesini sağlar. Sorgu sonucu iki tablonun satır sayısı çarpımları kadardır.
Kullanımı:
SELECT kolon_ad(lar)ı
FROM tablo_1 cross join tablo_2 ;
Örnek :
SELECT calisan_ad_soyad, bolum_adi
 FROM calisan CROSSJOIN bolum;
Sonuç tablosu:
j2
Sonuç tablosunda da görüldüğü 3*3=9 row elde edildi.
Inner Join
Inner Join işlemi ile birleştirilecek olan tabloların sütunlarının içerdiği veriler kontrol edilerek kesisim kümesi alınıyor. Aynı işlem “where” komutu kullanılarak da gerçekleştirilebilir. Inner join yerine join yazmak da yeterlidir.
Kullanımı:
SELECT kolon_ad(lar)ı
FROM tablo_1
INNER JOIN tablo_2
ON tablo_1.ortak_kolon=tablo_2.ortak_kolon ;
Örnek:
SELECT calisan_ad_soyad, bolum_adi
 FROM calisan INNERJOIN bolum ON calisan.bolum_no = bolum.bolum_no ;
 –where ile kullanımı
Select tablo_1.sütun_adı,tablo_2.sütun_adı
from tablo_1,tablo_2
where tablo_1.ortak_sütun=tablo2.ortak_sütun
SELECT calisan_ad_soyad, bolum_adi
 FROM calisan, bolum
 WHERE calisan.bolum_no = bolum.bolum_no ;
Sonuç Tablosu:
5 j3
Outer Join
Inner join komutu ile birleştirilecek olan tabloların ilişkili satıları listelenmekteydi fakat outer join komutu ile birleştirilecek tabloların ilişkili olamayan satıları da listelenmektedir. İlişkilendirilen tablolarda karşılığı olmayan satırlar NULL değer içerir. Outer join komutu genelde bilgileri eksik olan kayıtlar gibi değer içermeyen sorgular için kullanılır.
Oracle veri tabanında outer join ler where ifadesi ile kullanılabilmektedir.  Gösterimine geçmeden önce (+) ifadesinin ne anlama geldiğine değinelim. (+) ifadesi yazılan eşitliğin karşı tarafında belirtilen kolonda NULL değerler varsa bunların da sonuç ekranına getirilmesini sağlar. Örneğin
SELECTe.last_name, d.department_name
 FROMemployeese,departments d
 WHEREe.department_id = d.department_id(+) ;
sorgusu çalıştırıldığın da employees tablosunda department_id leri NULL değerler de sonuç ekranımıza getirilecektir. Buna left outer join denilmektedir.
SELECTe.last_name, d.department_name
 FROMemployeese,departments d
 WHEREe.department_id(+) = d.department_id ;
Sorgusuylada bir  tam tersi olarak departments tablosun da department_id leri NULL değerler de sonuç ekranımıza getirilecektir. Buna right outer join denilmektedir.
 Right Outer Join Sonuç Tablosu:
 j4
Natural Join
Birleştirilecek tablolarda aynı isim, değerli ve tipli birer tane sütun bulunuyorsa natural join işlemi ile birleştirilme yapılır. Natural join yapılacak tabloların normalize olmaları gerekir. Çalışma şekli iner join ile aynıdır.
Kullanımı:
SELECT kolon_ad(lar)ı
FROM tablo_1 natural join tablo_2 ;
Örnek:
SELECT calisan_ad_soyad, bolum_adi
 FROMcalisanNATURALJOINbolum ;
Sonuç Tablosu:
 j5
Join Using
Birleştirilecek olan tablolarda birleştirme işlemini yapılırken hangi sütunun kullanılması  gerektiğini belirtmek istersek join using komutu kullanılır.
Kullanımı:
SELECT kolon_ad(lar)ı
FROM tablo_1 join tablo_2 using(ortak_kolon);
Örnek:
SELECT calisan_ad_soyad, bolum_adi
 FROMcalisanJOINbolumUSING(bolum_no);
Sonuç Tablosu:
j6
Join On
İçerdiği veriler aynı olan fakat sütün isimleri farklı olan tabloları birleştirmek için join on komutu kullanılır.
Kullanımı:
SELECT kolon_ad(lar)ı
FROM tablo_1 join tablo_2 on (tablo_1.kolon_adı=tablo_2.kolon_adı);
Örnek:
SELECT calisan_ad_soyad, bolum_adi
 FROMcalisanJOINbolumON(calisan.bolum_no =bolum.bolum_no);
Sonuç Tablosu:
j7
                Bu yazım da genel olarak en sık kullanılan join komutlarına değinmeye çalıştım. Özellikle outer ve inner join fonksiyonlarına uygulamalarda sıklıkla yer verilmektedir. Küçük bir tavsiye gerek kalmadıkca cross join işleminden uzak durun J Bir sonraki makalede görüşmek üzere…
Aykut Sönmez

About Yusuf Arslan

Sakarya Üniversitesi Bilgisayar Mühendisliği bölümünü bitirdikten sonra kariyerine Datawarehouse-Database Uzmanı olarak devam etmektedir Sitenin kurucusu ve yazarıdır. yusufarslanbm@gmail.com adresinden bana ulaşabilirsiniz.

İlginizi Çekebilir

SQL Server ile Veri Şifreleme

Bilgi teknolojilerinde verinin güvenliği çok kritik bir öneme sahiptir. Önemli verileri korumak için ekstra bir …

Bir Cevap Yazın