İ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.
CREATE TABLE bolum
(
bolum_no NUMBER(4),
bolum_adi VARCHAR2(16)
);
CREATE TABLE calisan
(
calisan_id NUMBER(4),
calisan_ad_soyad VARCHAR2(32),
bolum_no NUMBER(4)
);
insert into bolum (bolum_no,bolum_adi)values( 1,'Muhasebe');
insert into bolum (bolum_no,bolum_adi)values( 2,'Üretim');
insert into bolum (bolum_no,bolum_adi)values( 3,'Destek');
insert into bolum (bolum_no,bolum_adi)values( 4,'Finans');
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 1,'Ahmet Yılmaz',1);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 2,'Hasan Haktan',2);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 3,'Yasemin Kaya',3);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 4,'Ali Yılmaz',3);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 5,'Halis Haktan',2);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 6,'Yasemin Kaya',3);
Bu işlemler sonucunda
Inner Join
Inner Join işlemi ile birleştirilecek olan tabloların sütunlarının içerdiği veriler kontrol edilerek kesişim 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 ;
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:
SELECT calisan_ad_soyad, bolum_adi
FROM calisan, bolum
WHERE calisan.bolum_no = bolum.bolum_no(+) ;
sorgusu çalıştırıldığında bolum tablosunda bolum_no alanları NULL değerler de sonuç ekranımıza getirilecektir. Buna left outer join denilmektedir.
SELECT calisan_ad_soyad, bolum_adi
FROM calisan, bolum
WHERE calisan.bolum_no(+) = bolum.bolum_no;
Sorgusuylada bir tam tersi olarak calisan tablosunda bolum_no alanı NULL değerler de sonuç ekranımıza getirilecektir. Buna right outer join denilmektedir.
ö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.
CREATE TABLE bolum
(
bolum_no NUMBER(4),
bolum_adi VARCHAR2(16)
);
CREATE TABLE calisan
(
calisan_id NUMBER(4),
calisan_ad_soyad VARCHAR2(32),
bolum_no NUMBER(4)
);
insert into bolum (bolum_no,bolum_adi)values( 1,'Muhasebe');
insert into bolum (bolum_no,bolum_adi)values( 2,'Üretim');
insert into bolum (bolum_no,bolum_adi)values( 3,'Destek');
insert into bolum (bolum_no,bolum_adi)values( 4,'Finans');
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 1,'Ahmet Yılmaz',1);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 2,'Hasan Haktan',2);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 3,'Yasemin Kaya',3);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 4,'Ali Yılmaz',3);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 5,'Halis Haktan',2);
insert into calisan(calisan_id,calisan_ad_soyad,bolum_no)values( 6,'Yasemin Kaya',3);
Bu işlemler sonucunda
Inner Join
Inner Join işlemi ile birleştirilecek olan tabloların sütunlarının içerdiği veriler kontrol edilerek kesişim 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 ;
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:
SELECT calisan_ad_soyad, bolum_adi
FROM calisan, bolum
WHERE calisan.bolum_no = bolum.bolum_no(+) ;
sorgusu çalıştırıldığında bolum tablosunda bolum_no alanları NULL değerler de sonuç ekranımıza getirilecektir. Buna left outer join denilmektedir.
SELECT calisan_ad_soyad, bolum_adi
FROM calisan, bolum
WHERE calisan.bolum_no(+) = bolum.bolum_no;
Güzel paylaşım, teşekkürler...
YanıtlaSilEmeğinize sağlık çok faydalı bilgiler.
YanıtlaSil