Ara
9
2008
9
2008
SQL ‘de Joinler
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…
Benzer Püf Noktaları
Yorumunu Bırak !
Facebook Hayran Sayfamız
En Çok Okunan Yazılar
- Tırnak Bakımının Püf Noktaları Nelerdir ? (58762)
- Google'ın Püf Noktaları (48220)
- Halı Temizliğinde Püf Noktalar: (38126)
- Smf Güvenlik için Püf noktalar.. (32990)
- Pc Soğutma'nın Püf Noktası (26268)
- Tantuni Lavaşı Nasıl Yapılır (25943)
- Ervamatin Nedir ? (25145)
- En Çok Radyasyon Yayan Telefonlar..! (25144)
- Kek Yapmanın Püf Noktaları! (24059)
- Tantuni Nedir Nasıl Yapılır (22343)

Yazar:





