Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

ÇOKLU TABLOLAR.

Benzer bir sunumlar


... konulu sunumlar: "ÇOKLU TABLOLAR."— Sunum transkripti:

1 ÇOKLU TABLOLAR

2 Çoklu tabloların kullanımı
Bazı uygulamalarda veri birden fazla tablo üzerinde yer alabilir. Bu tablo verileri birleştirilerek sonuçlar elde edilir. PERSONEL_NO ADI BÖLÜM_NO BÖLÜM_NO BÖLÜM_ADI KONUM PERSONEL_NO BÖLÜM_NO KONUM

3 Tabloların birleştirilmesi
Birden fazla tabloyu ele alarak, birleştirilmesi ve tek bir sonucun üretilmesi durumunda birleştirme (join) işlemi uygulanır. SELECT tablo1.sütun1, tablo2.sütun2 FROM tablo1,tablo2 WHERE tablo1.sütun1=tablo2.sütun2 İki tabloyu birleştirmek için bir birleştirme koşulunun düzenlenmesi gerekir. Bu koşul, her iki tablonun hangi sütunları kullanılarak birleştirileceğini belirler. Sadece iki tablo değil n sayıda tablo birleştirilebilir. Ancak bu durumda en az (n-1) birleştirme koşulu tanımlanmalıdır.

4 Kartezyen çarpım İki tablo arasında birleştirme koşulu tanımlanmamış ise sonuç olarak bir kartezyen çarpım elde edilir. Örnek: PERSONEL ve BÖLÜM tablolarını birleştirmek için: SELECT PERSONEL_NO, ADI, BÖLÜM_ADI FROM PERSONEL, BÖLÜM; Bir birleştirme koşulu tanımlanmadığı için, her iki tablodaki satırların sayısının birbirleriyle çarpımı kadar satırdan oluşan bir sonuç elde edilir.

5 Birleştirme türleri Tabloları farklı şekillerde birleştirme olanağı bulunmaktadır. Eşiti olan birleştirme Eşiti olmayan birleştirme Dış birleştirme Kendine birleştirme

6 EŞİTİ OLAN BİRLEŞTİRME
PERSONEL_NO ADI BÖLÜM_NO Bir personelin çalıştığı bölümün adını elde etmek için , PERSONEL tablosunun BÖLÜM tablosunun BÖLÜM_NO isimli sütununun içeriği ile karşılaştırılır. SELECT PERSONEL.PERSONEL_NO, PERSONEL.ADI, PERSONEL.BÖLÜM_NO, BÖLÜM.BÖLÜM_ADI, BÖLÜM.KONUM FROM PERSONEL, BÖLÜM WHERE PERSONEL.BÖLÜM_NO=BÖLÜM.BÖLÜM_NO; BÖLÜM_NO BÖLÜM_ADI KONUM Dış anahtar Birincil anahtar

7 EŞİTİ OLAN BİRLEŞTİRME
Farklı tablolardan alınan sütun isimlerinde benzerlik olduğunda SQL bunu ayırd edemeyeceğinden,muhakkak başında tablo ismiyle çağrılmalıdır. Bazen sorgu cümlelerinin kısaltılması maksadıyla tablo isimleri daha kısa isimlerle yeniden adlandırılır. SELECT P.PERSONEL_NO, P.ADI, P.BÖLÜM_NO, B.BÖLÜM_ADI, B.KONUM FROM PERSONEL P, BÖLÜM B WHERE P.BÖLÜM_NO=B.BÖLÜM_NO;

8 EŞİTİ OLMAYAN BİRLEŞTİRME
Eğer birinci tablonun bir sütununa, ikinci tabloda doğrudan uyan bir sütun yoksa, eşit olmayan birleştirmeden söz edilir. PERSONEL(Personel_No, Adı, Yöneticisi, Ücret, Bölüm_No) ÜCRET_DÜZEY(Derece, EnAz, EnÇok) Yukarıdaki iki tabloyu birleştirebilecek bir ortak sütun yoktur.Ancak; SELECT ADI, ÜCRET, DERECE FROM PERSONEL,ÜST_DÜZEY WHERE ÜCRET BETWEEN ENAZ AND ENÇOK;

9 Dış birleştirme Eşiti olan birleştirmede eşleşen sütunlarda eşleşemeyen kayıtlar yazılmıyordu, bunları da yazdırmak için Dış Birleştirme kullanılır. Örnek: BÖLÜM tablosunda yer alan ancak PERSONEL tablosunda yer almayan ve REKLAM bilgisini içeren bir satır bulunmaktadır. Bu iki tabloyu karşılaşmayan kayıtları da görüntüleyecek biçimde birleştirmek ve sonucu listelemek için: SELECT P.ADI, P.BÖLÜM_NO, B.BÖLÜM_ADI FROM PERSONEL P RIGHT JOIN BÖLÜM B ON P.BÖLÜM_NO=B.BÖLÜM_NO;

10 Kendine birleştirme Bazı uygulamalarda birleştirme işlemi tek bir tablonun kendi sütunları içerisinde yapılmaktadır. PERSONEL tablosunu iki farklı tablo biçiminde düşünebiliriz. PERSONEL_NO ADI YÖNETİCİSİ 101 BURAK 250 ERSİN 160 AHMET 150 AYBİKE PERSONEL_NO ADI 101 BURAK 250 ERSİN 160 AHMET 150 AYBİKE

11 Kendine birleştirme Örnek: PERSONEL tablosunun YÖNETİCİSİ başlıklı sütunu, her bir personelin yöneticisinin personel numarasını içermektedir. Hangi yöneticinin hangi personelle çalıştığını belirlemek için: SELECT P.PERSONEL_NO AS NO, P.ADI AS PERSONEL, Y.ADI AS YÖNETİCİSİ FROM PERSONEL P, PERSONEL Y WHERE Y.PERSONEL_NO= P.YÖNETİCİSİ;

12 KÜME OPERATÖRLERİNİ KULLANARAK BİRLEŞTİRME
UNION ve UNION ALL işleçleri Union, verilen koşul ifadesine uygun olarak, çift kayıtların göz ardı edilerek her iki kümedeki tüm kayıtları seçer. Union All, çift kayıtları da dahil eden birleştirme işlemidir. Örnek: PERSONEL tablosunda, adı “A” ile başlayanları veya görevi “M” ile başlayanları topluca listelemek için: SELECT Adı,Görevi FROM PERSONEL WHERE Adı LIKE “A*” UNION SELECT Adı, Görevi FROM PERSONEL WHERE Görevi LIKE “M*”;


"ÇOKLU TABLOLAR." indir ppt

Benzer bir sunumlar


Google Reklamları