sugibiask


 

ANA SAYFA - DERSLER - SCRiPTLER - FORUM - İNDİRİM KUPONU - EN COK iNDiRiLENLER - İLETİŞİM - REKLAM

 

   ÜYE GİRİŞİ
  Kullanıcı Adı :
  Şifre :

  Beni Hatırla:
     

   EN SON 3 YENİLİK

   CAPRAZ .NET 'TE ARA





 


Dersin Adı : JOINS ve KEYS
Okunma : 660 Kategori :   SQL  
Eklenme Tarihi : 10/30/2004


.: DETAY :.


         


Bazı durumlarda veritabanımızdaki iki tablodan birden veri almak durumunda kalabiliriz. Bu tür durumlarda join ifadesinden ve key ifadelerinden faydalanabiliriz. Öncelikle aşağıdaki "sirketler" ve "isciler" adlı tabloları inceleyelim.

Sirket_ID Sirket_İSİM
17 Alfemo Mobilya
24 İstikbal Mobilya
39 Konfor Mobilya
48 Mekan Mobilya

 

İsci_ID İsci_İSİM İsci_TELEFON İsci_SİRKET
192 Ahmet VURAL 545 898 75 98 17
213 Selami TEK 533 546 45 77 17
219 Vahdettin KOYUNCU 542 569 52 52 24
225 Ahmet Şafak ERDÖNMEZ 535 365 88 96 39
319 Burak CANKAZANÇ 505 548 97 52 52

"sirketler" tablosundaki Sirket_ID sütunu "primary_key" yani birincil anahtar veri içerir. Bildiğiniz gibi birincil anahtar olan sütunlardaki veriler asla tekrarlanmaz. Yani "sirketler" tablosuna ne kadar veri girerseniz girin artık hiç bir şirket , Alfemo Mobilya'ya atanmış olan 17 nolu sirket_ID değerini alamaz. Aynı şekilde "isciler" tablosunda da İsci_ID sütunu bir "primary key" sütunudur. "isciler" tablosundaki isci_sirket sütunu , "sirketler" tablosundaki sireketlerin sirket_ID numaralarına isaret etmektedir. "isciler" tablosunda her ne kadar işçilerin çalıştıkları şirketlerin isimleri yazmasa da biz sirket idlerinin tutulduğu isci_sirket sütunu sayesinde her işçinin çalıştığı şirketin adını öğrenebiliriz. Bunun için kullanmamız gereken sql cümlesi ve elde edeceğimiz sonuç tablosu aşağıdaki gibi olacaktır.

select isciler.isci_isim , sirketler.sirket_isim from isciler , sirketler where sirketler.sirket_ID=isciler.isci_sirket

İsci_İSİM Şirket_İSİM
Ahmet VURAL Alfemo Mobilya
Selami TEK Alfemo Mobilya
Vahdettin KOYUNCU İstikbal Mobilya
Ahmet Şafak ERDÖNMEZ Konfor Mobilya

Aynı örnek üzerinden gidecek olursak Alfemo Mobilya'da çalışan işçileri ve telefon numaralarını elde etmek için kullanmamız gereken sql cümlesi ve elde edeceğimiz sonuç şu şekilde olacaktır.

select isciler.isci_isim , isciler.isci_telefon from isciler,sirketler where sirketler.sirket_ID=isciler.isci_sirket and sirketler.sirket_isim='Alfemo Mobilya'

INNER JOIN
inner join ifadesi , her iki tablodan da şartların doğrulandığı verileri sıralar. Bu yönü ile yukarıdaki sql ifadeleri ile hemen hemen aynı işe yaramaktadır.

select isciler.isci_isim , sirketler.sirket_isim from isciler inner join sirketler on sirketler.sirket_ID=isciler.isci_sirket

İsci_İSİM Şirket_İSİM
Ahmet VURAL Alfemo Mobilya
Selami TEK Alfemo Mobilya
Vahdettin KOYUNCU İstikbal Mobilya
Ahmet Şafak ERDÖNMEZ Konfor Mobilya

LEFT JOIN
left join ifadesi , on ifadesinden sonra gelen koşulla eşleşsin , eşleşmesin birinci tablodaki tüm verileri listeler.

select isciler.isci_isim , sirketler.sirket_isim from isciler left join sirketler on sirketler.sirket_ID=isciler.isci_sirket

RIGHT JOIN
right join ifadesinin tam tersi olarak , eşleşmesi olsun olmasın ikinci tablodaki tüm verileri listeler.

select isciler.isci_isim , sirketler.sirket_isim from isciler right join sirketler on sirketler.sirket_ID=isciler.isci_sirket

İsci_İSİM Şirket_İSİM
Ahmet VURAL Alfemo Mobilya
Selami TEK Alfemo Mobilya
Vahdettin KOYUNCU İstikbal Mobilya
Ahmet Şafak ERDÖNMEZ Konfor Mobilya
Burak CANKAZANÇ  

Bu örnekte , Burak Cankazanç adındaki işçinin şirketi 52 numara ile gösteriliyor. Oysa şirketler tablosunda sirket_ID değeri 52 olan bir şirket kayıtlı değil. Ancak right join ifadesi kullanıldığı için Burak Cankazanc'ın kaydı listeleniyor ancak şirket ismi gösterilemiyor.