SQL Sorgulama dilinde birden fazla tabloyu birleÅŸtirme yada ilgili baÅŸka tablodan veri çekmek için Inner, Outer, Left, Right, Cross Join’lar kullanılır.
iNNER JoiN :
Her iki tabloda da, birleÅŸtirdiÄŸimiz alana göre, mevcut olan kayıtları getirir.inner join ile hangi tablo ile hangi tabloyu birbirine baÄŸlamak istiyorsak o tabloların baÄŸlantıları varsa ki onlarıda Idlerden anlıyoruz varsa inner join ile baÄŸlantıyı gerçekleÅŸtirebiliriz.inner joinde eÅŸit olan kayıtlar döner.inner join ile 7 tabloya kadar birlestirme yapilabilir.sonuc kümesinde eÅŸleÅŸen kayıtarı bize getirir. İliÅŸkisel veritabanının en temelinde birden fazla tablo üstünde birlikte iÅŸlem yapabilmek yatar. Bu sayede verilerin tekrarlaması önlenmiÅŸ olur ve sonuçta veri yönetimi kolaylaşır.
Örnek: –speedy expeeres ile taşınmış siparisleri gösterin
select * from orders
inner join shippers on Shippers.shipperID=orders.ShipVia
where shippers.CompanyName=‘Speedy Express’
OUTER JoiN :
Sık kullanılmazlar.iç içe select ifadeleriyle oluÅŸturulan sorgulardan performans bakımından daha hızlı çalışır.Left outer join ve right outer joinlerdir.Left ve right outer join ifadeleri iliÅŸkili alanda birbiriyle eÅŸleÅŸenlerin yanında eÅŸleÅŸmeyen kayıtlarıda listeler.Join koÅŸuluna uymayan satırlar NULL(boÅŸ) deÄŸer olarakgörüntülenirler…
Left [ outer ] join :
ilk tablodaki tüm verileri görüntüler ve diÄŸer tablo ile eÅŸleÅŸmeyen alanlar NULL(boÅŸ) deÄŸer gösterilir.iki tablo arasında iliÅŸkili sorgu yapılırken ,Left outer join kullanıldığında,birinci tablodaki tüm kayıtlar getirilir ve ikinci tabloda ise sadece iliÅŸkiye göre uygun kayıtlar saÄŸ tarafına eklenir
Söz dizimi:
select <sutün_ad(lar)ı>from <ilk_ tablo>
Left join<ikinci _tablo> on <ilk_tablo>.<anahtar_alan>=<ikinci_tablo>.<anahtar_alan>
Örnek: Çalışanın tam adı ve müÅŸterilerden aldığı sipariÅŸler ve tarihleri gösterelim :
select Employees.FirstName +‘ ‘+ Employees.LastName as Name,
OrderID,Orderdate
from employees
left join orders on Employees.EmployeeID=Orders.EmployeeID
sonuc : sorgu sonucu 830 kayıt geldi
Steven Buchanan 10248 1996-07-04 00:00:00.000
Michael Suyama 10249 1996-07-05 00:00:00.000
Margaret Peacock 10250 1996-07-08 00:00:00.000
Janet Leverling 10251 1996-07-08 00:00:00.000
Margaret Peacock 10252 1996-07-09 00:00:00.000
Janet Leverling 10253 1996-07-10 00:00:00.000
RiGHT [ OUTER ] JOiN :
İki tablo arasındaki iliÅŸkili sorgu yapılırken ,right outer join kullanıldığınfa,ikinci tablodaki tüm kayıtlar getirilir.Birinci tabloda ise sadece iliÅŸkiye göre uygun kayıtlar saÄŸ tarafına tarafına eklenir .ikinci tablodaki tüm kayıtları listemek istendiÄŸinde right join kullanılır.Bu durumda ise birinci tablodaki eÅŸleÅŸmeyen kayıtlar NULL(boÅŸ) olarak görüntülenir.
Söz dizimi:
Select<sutün_ad(lar)ı>from <ilk_tablo>right join <ikinci_tablo>
On <birinci_tablo>.<anahtar_alan>=<ikinci_tablo>.<anahtar_alan>
Örnek: Tüm müÅŸteriler ve verdikleri sipariÅŸlerin tarihlerini ve hiç sipariÅŸi olmayan müÅŸterilerin tarih alanı null(boÅŸ) olarak görüntülenecektir
Select companyname,customers.customerID,orderdate
From customers
Right join orders
On customers.customerID=orders.custemerID
Sorgu sonucu :
Vins et alcools Chevalier VINET 1996-07-04 00:00:00.000
Toms Spezialitäten TOMSP 1996-07-05 00:00:00.000
Hanari Carnes HANAR 1996-07-08 00:00:00.000
Victuailles en stock VICTE 1996-07-08 00:00:00.000
Suprêmes délices SUPRD 1996-07-09 00:00:00.000
Hanari Carnes HANAR 1996-07-10 00:00:00.000
Chop-suey Chinese CHOPS 1996-07-11 00:00:00.000
CROSS JoiN : (Kartezyen Çarpım)
İliÅŸkili tablolar arasında olası tüm eÅŸleÅŸmeleri listeler.Belirli ortak bir alan belirtilmesine gerek yoktur.Her iki tabloyu çapraz olarak birleÅŸtirir.Yani,ilk tablodaki her bir kayıt için ikinci tablodaki her satır sonuç olarak döner.Tabloların birbiri ile arasında bir iliÅŸki tanımlamadan iliÅŸkisel sorgu yapılırsa,kartezyen çarpımı bulunur.Bu birinci tablodaki her bir kayıt ile ikinci tablodaki her bir kayıt iliÅŸkilidir demektir ve iliÅŸkisel veritabanın doÄŸasına terstir.Birinci tablodaki kayıtların herbirisini ikinci tablodaki kayıtlara eÅŸleÅŸtirilir.Kartezyen çarpımını alır.A tablosunda 3 kayıt olsun B tablosunda 5 kayıt olsun ,herbir kayıt diÄŸer tablonun herbir kaydı ile eÅŸleÅŸeceÄŸinden 3X5=15 kayıt döndürür.
Örnek : aÅŸağıdaki örnekte üreticilerin çalışabilecekleri tüm olası gemi ÅŸirketlerini görmemizi saÄŸlar.shippers tablosu 3 kayıt ve suppliers (üreticiler) tablosu 29 kayıt olduÄŸundan ,sonuç kümesinde 87 satır görünecektir( 3X29=87)
select suppliers.companyname,shippers.companyname
from suppliers
cross join shippers
sonuç kümesi :
companyname companyname
Exotic Liquids Speedy Express
New Orleans Cajun Delights Speedy Express
Grandma Kelly’s Homestead Speedy Express
Tokyo Traders Speedy Express
Cooperativa de Quesos ‘Las Cabras’ Speedy Express
Mayumi’s Speedy Express
Pavlova, Ltd. Speedy Express
87 tane sorgu kümesi için satır oluÅŸmuÅŸtur.
Bilgi PaylaÅŸtıkça Büyür . . .
BaÅŸka Makalelerde GörüÅŸmek dileÄŸiyle…
Popularity: 7% [?]

Add A Comment