22 Mayıs 2014 Perşembe

Sql Server'da Joinler Full join, Cross join, Outer join , İnner join

Joinler;
Birden fazla tablonun ortak alanlar ile birleşmesi için kullanılır.

İnner join;  Sadece 2 tabloda olan, kesişen tablolar alınır.
Kullanımı:   select * from  <tablo_adı> <değişken>
                     join <tablo_adı> <değişken>
                     on  <değişken> <alan_adı>=<değişken><alan_adı>
Değişken belirtmemizin amacı kullanıcıya kısaltma sağlamaktır. Kullanımı zorunlu değildir.

Örnek: select * from filmler f
             İnner join oyuncular o
             on f.filmadı=o.filmadı

Buradaki değişkenler de filmler-f, oyuncular-o dur.



Cross join;
2 tablonun bütün kayıtlarını çaprazlar.

Kullanımı: select * from <tablo_adı> <değişken>
                  Cross join <tablo_adı> <değişken>
Örnek: select * from oyuncular
             cross join filmler

Full join: Her 2 tablodaki kesişen-kesişmeyen tüm kayıtlar gösterilir.Eşleşmeyenler “null” ile gösterilir.

Kullanımı: select * from <tablo_adı> <değişken>
                   Full join <tablo_adı><değişken>
                   On <değişken>.<alan_adı>=<değişken>.<alan_adı>
Sonuçlar daima ilk tabloya göre baz alınır. Eşleşmeyen null karakterler de baz alınan tabloya göre girilmemiş kayıttır.


Outer join:  2 ye ayrılır. Left outer join,right outer join.
Left outer join, Left outer join, ifadesinin sol tarafındaki tablo baz alınır. O tablo(baz alınan) olduğu gibi yazılır, diğer tablodan ise eşlenen kayıtlar karşısına yazılır. Eğer eşleşen kayıt yoksa o satır NULL ile tamamlanır.

Kullanımı:   select * from <tablo_adı> <değişken>
                     Left outer join <tablo_adı> <değişken>
                     On  <değişken>.<alan_adı> = <değişken>.<alan_adı>

Örnek: select * from filmler f
              Left outer join oyuncular o
              On f.filmno=o.filmno




Right outer join:Right outer join, ifadesinin sağ tarafındaki tablo baz alınır. O tablo(baz alınan) olduğu gibi yazılır, diğer tablodan ise eşlenen kayıtlar karşısına yazılır.Eşleşen kayıt yoksa satır “null” ile doldurulur.

Kullanımı:   select * from <tablo_adı> <değişken>
                     Right outer join <tablo_adı> <değişken>
                     On  <değişken>.<alan_adı> = <değişken>.<alan_adı>


Örnek: select * from oyuncular o
              Right outer join filmler f
              On o.filmno=f.filmno

Joinlere örnek olacak bir kayıt;
create table oyuncular (
oyuncu_no int,
oyuncular1 varchar (50),
oyuncular2 varchar (50))

insert into oyuncular values (1,'beren saat', 'kenan imirzalioğlu')
insert into oyuncular values (2,'can dündar','melike ipek yalova')
insert into oyuncular values (3,'duygu çetinkaya','dilara öztunç')
insert into oyuncular values (4,'şafak sezer','çağatay ulusoy')
insert into oyuncular values (5,'selin şekerci','serenay sarıkaya')
insert into oyuncular values (6,'cem yılmaz','demet özdemir')


select * from oyuncular

create table film (
film_no int,
film varchar (100))

insert into film values (1,'karanlık yol')
insert into film values (2,' 24 ')
insert into film values (5,'koleksiyoncu')
insert into film values (8,'beni unutma')
insert into film values (9,'aşk tesadüfleri sever')
insert into film values (11,'incir reçeli')
select * from film



'İnner join
select * from film
inner join oyuncular
on film_no=oyuncu_no

'Full join
select * from film
full join oyuncular
on film_no=oyuncu_no


'Cross join
select * from film cross join oyuncular

'Outer join
select * from film right outer join oyuncular
on film_no=oyuncu_no


Hiç yorum yok:

Yorum Gönder