Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veritabanı Yönetim Sistemleri-I Ders 3 Birden fazla tabloyu birleştirmek Equi-join INNER JOIN OUTER JOIN.

Benzer bir sunumlar


... konulu sunumlar: "Veritabanı Yönetim Sistemleri-I Ders 3 Birden fazla tabloyu birleştirmek Equi-join INNER JOIN OUTER JOIN."— Sunum transkripti:

1 Veritabanı Yönetim Sistemleri-I Ders 3 Birden fazla tabloyu birleştirmek Equi-join INNER JOIN OUTER JOIN

2 Tabloları birleştirmek SELECT ile oluşturulmak istenen listede bulunan alanlar birbirinden farklı tablolarda bulunuyorsa, tabloları birleştirerek sorgulamak gerekiyor Birden fazla tabloyu birleştirerek sorgulamak için JOIN ifadesi kullanılır. Tablo birleştirmenin pek çok türü vardır, önde gelen bazıları şunlardır ◦ INNER JOIN ◦ EQUI-JOIN ◦ OUTER JOIN

3 Tabloları birleştirmek Örne ğ in ürünlerin adlarını, fiyatları, satıcı adlarını ve satıcı şehirlerini yanyana listelemek istersek görece ğ iz ki istenen alanlar iki farklı tabloda bulunmaktadır saticilar tablosu urunler tablosu

4 Tabloları birleştirmek Oluşturulmak istenen liste aşa ğ ıdaki gibi olacaktır saticilar tablosuurunler tablosu

5 Tabloları birleştirmek İ ki tablodan ilişkili alanları alırken, şu adımlar dikkate alınır ◦ Bahsi geçen tablolar mantıksal olarak ilişkili olmalıdır ◦ İ ki tablodaki tüm satırlar de ğ il, sadece mantıksal olarak ilişkili satırlar yanyana getirilir ◦ Daha iki tablodaki satırların yanyana getirilmesi sonucu oluşan yeni tablodan istenen alanlar seçilebilir

6 Tabloları birleştirmek İ ki tabloda mantıksal olarak ilişkili satırların birleştirilmesi Urunler tablosundaki satici_id = ‘DLL01’ olan satır saticilar tablosundaki satici_id = ‘DLL01’ olan satırla birleştiriliyor

7 Tablo birleştirme Benzer şekilde di ğ er satırlarda ikinci tablodaki ilgili satırlarla birleştiriliyor B İ RLEŞT İ RME KURALI urunler.satici_id = saticilar.satici_id

8 Tablo birleştirme Tablo birleştirme sırasında en kolay yol equi-join yazımını kullanmaktadır ◦ Birleştirilecek tablolar virgülle ayrılarak FROM’dan sonra yazılır ◦ Birleştirme şartı (yani hangi satırların yanyana gelece ğ ine dair şart) WHERE ifadesinde yazılır ◦ SELECT ile seçilecek sütunlardan (alanlardan) önce alanın hangi tablodan gelece ğ i yazılır ◦ İ stenirse tablo isimleri için kısa adlar (alias) kullanılabilir

9 Tablo birleştirme Ürünlerin adlarını, fiyatları, satıcı adlarını ve satıcı şehirlerini yanyana listeleyen SQL sorgusu Tablolar virgülle ayrılmış olarak yazılır Satır birleştirme şartı (her iki tabloda aynı olan de ğ erler) verilir Seçilen alanlar “tablo.alan” formatında yazılır

10 Tablo birleştirme Tablo isimlerine “alias – kısa ad” vererek sorgu biraz daha sadeleştirilebilir (Ör: saticilar için “s”, urunler için “u” kısa adı kullanılabilir)

11 Tablo birleştirme İ kinci bir örnek: ◦ Sipariş edilen ürünlerin (sip_edilen), urun_id, sip_num bilgilerini ile urun_ad bilgilerini listeleyiniz (urun ad bilgisi urunler tablosundadır)

12 Tablo birleştirme Tablo isimler için yine kısa ad kullanılmıştır

13 Tablo birleştirme Equi-join ile yapılan işi INNER JOIN ile de yapabiliriz. Bu JOIN türü yazım olarak biraz farklıdır ama aynı işi yapmaktadır. İ ki yazımı kıyaslayalım: SELECT alanlar FROM tablo1, tablo2 WHERE tablo1.alan1 = tablo2.alan2 Equi-join yazımı SELECT alanlar FROM tablo1 INNER JOIN tablo 2 ON tablo1.alan1 = tablo2.alan2 INNER JOIN yazımı “ON” anahtar kelimesi şart belirtmek için kullanılmaktadır

14 Tablo birleştirme İ lk sorgumuzu INNER JOIN ile yazmış olsaydık, şöyle yazmamız gerekirdi

15 Tablo birleştirme Birden fazla tabloyu aynı anda birleştirmek için yazılan ifadeleri her tablo için tekrar etmek gerekir SELECT alanlar FROM tablo1 INNER JOIN tablo 2 ON tablo1.alan1 = tablo2.alan2 INNER JOIN tablo3 ON tablo3.alan3 = tablo2.alan2 INNER JOIN tablo4 ON tablo4.alan4 = tablo3.alan3 …….

16 Tablo birleştirme Örne ğ in şu aşa ğ ıdaki alanlari içeren liste isteniyor olsun: ◦ Her bir sipariş edilen ürünün sipariş numarasını ve urun_id bilgisini (sip_edilen tablosundan) ◦ Siparişin tarihini (siparisler tablosundan), ◦ Siparişi veren müşterinin adını (musteriler tablosundan)

17 Tablo birleştirme

18 Tablo birleştime Aynı sorgu Equi-Join ile şöyle yazılabilirdi Tüm birleştirme şartları “AND” ile yanyana yazılır Tüm tablolar virgülle ayrılarak yanyana yazılırlar

19 Tablo birleştirme OUTER JOIN ◦ Bazen birleştirilecek iki tabloda birinci tabloda bulunan satırın, ikinci tabloda bir eşleşmesi olmayabilir. ◦ Bu durumda INNER JOIN ve EQUI-JOIN sorgularında, ikinci tabloda eşleşmesi bulunmayan satırlar sorgu dışında bırakılırlar ◦ Ör: Satici_id de ğ eri, satıcılar tablosunda bir satıcıya işaret etmeyen ürün satırları gibi

20 Tablo birleştirme OUTER JOIN (devam) ◦ E ğ er birinci tablodaki tüm satırlar eşleşme olmamasına ra ğ men listeye eklensin ve eşleşme satırı boş bırakılsın isteniyorsa OUTER JOIN kullanılır  Birinci tablodaki satır baz alınarak eşleşme yapılacaksa LEFT OUTER JOIN  İ kinci tablodaki satır baz alınarak eşleşme yapılacaksa RIGHT OUTER JOIN kullanılır

21 Tablo birleştirme Örne ğ in siparişler ve müşteriler tablolarını incelersek: ◦ Her siparişin bir müşteriye ait oldu ğ unu, yani siparişler tablosundaki her sip_id’nin musteriler tablosunda bir must_id’e denk geldi ğ ini ◦ Fakat her müşterinin bir sipariş vermemesinden dolayı, musteriler tablosundaki her must_id’nin, siparisler tablosundaki bir sip_id’e denk gelmedi ğ ini görürür

22 Tablo birleştirme Tüm siparişler herhangi bir müşteri ile ilişkili Fakat tüm müşterilerin en az bir siparişi bulunmamaktadır (Ör: nolu müşteri)

23 Tablo birleştirme Dolayısıyla INNER JOIN veya EQUI-JOIN ile yapılan tüm sorgularda nolu müşteri her zaman liste dışında kalacaktır (sipariş kaydı olmadı ğ ı için) E ğ er bu müşteriyi de listeye dahil etmek istiyorsak LEFT OUTER JOIN kullanmamız gerekir Bu durumda bu müşterinin sipariş kaydının karşısında NULL ifadeler olacaktır (siparişi olmadı ğ ını gösterir)

24 Tablo birleştirme kodlu müşteriye ait 2 satır oldu ğ una kodlu müşterinin karşısındaki de ğ erlerin NULL oldu ğ una dikkat ediniz

25 Tablo birleştirme Aynı sorgu INNER JOIN ile yazılsaydı (sadece INNER yerine LEFT OUTER yazmak yeterli) satır sayısı bir tane azalacaktı.

26 Tablo birleştirme Alternatif olarak listeyi sadece bu müşteriyi listeleyecek şekilde, yani hiç siparişi olmayan müşterileri gösterecek şekilde, tekrar da yazabiliriz

27 Tablo birleştirme JOIN ve GROUP BY kullanımı ◦ Tablo birleştirme sonrasında ortaya çıkan geçici tablodan istenilen alan seçilebildi ğ i gibi di ğ er SQL işlemleri de yapılabilir ◦ Örne ğ in tablolar birleştikten sonra birleşen yeni tablo üzerinde gruplama (GROUP BY), sıralama (ORDER BY) veya filtreleme (WHERE) kullanılabilir ◦ Normal bir tablodaki sorgulara göre tek fark, alanları WHERE, GROUP BY, ORDER BY içinde yazarken, tablo adı ile birlikte yazmak gerekir (tablo.alan formatında)

28 Tablo birleştirme Örne ğ in aşa ğ ıdaki sorgu, tablo birleştirme yapmadan normal bir gruplama işlemini içermektedir Peki ya gruplamayı satici_id yerine satici_ad alanına göre yapmak istersek? (Bu alan urunler tablosunda de ğ il, saticilar tablosundadır)

29 Tablo birleştirme Bu durumda önce iki tablo birleştirilir, daha sonra iki tablodaki alanlara göre gruplama tekrar yazılır

30


"Veritabanı Yönetim Sistemleri-I Ders 3 Birden fazla tabloyu birleştirmek Equi-join INNER JOIN OUTER JOIN." indir ppt

Benzer bir sunumlar


Google Reklamları