Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

KARMAŞIK SORGULAR. A LT SORGU KAVRAMı Karmaşık sorgular, bir sorgu içinde birden fazla SELECT deyiminin kullanılması ile elde edilir. Karmaşık sorgularda,

Benzer bir sunumlar


... konulu sunumlar: "KARMAŞIK SORGULAR. A LT SORGU KAVRAMı Karmaşık sorgular, bir sorgu içinde birden fazla SELECT deyiminin kullanılması ile elde edilir. Karmaşık sorgularda,"— Sunum transkripti:

1 KARMAŞIK SORGULAR

2 A LT SORGU KAVRAMı Karmaşık sorgular, bir sorgu içinde birden fazla SELECT deyiminin kullanılması ile elde edilir. Karmaşık sorgularda, ana sorgu bir başka alt sorgudan elde edilen sonuçları kullanır. Uygulamada, bir sorgudan elde edilen sonuç, diğer bir sorguyu ilgilendirebilir. Bu gibi durumlarda alt sorgular (iç sorgular) kullanılır.

3 A LT SORGU KAVRAMı Örnek: “Hangi personelin ücreti “HALİT” isimli personelin ücretinden daha fazladır?” bu problemi iki farklı sorguya ayırmak mümkündür. Sorgu1. “HALİT” isimli personelin aylık ücreti nedir? Sorgu2. Hangi personelin ücreti “HALİT” isimli personelin ücretinden daha fazladır?

4 A LT SORGUNUN TANıMLANMASı Sorgu biçimi: SELECT liste FROM tablo WHERE ifade işleç (SELECT liste FROM tablo ) Tanımda görüldüğü gibi, iki SELECT deyimi ile bir farklı sorgu tanımlanmıştır. Bu iki sorgu birbirine WHERE koşul sözcüğü içinde bağlanmıştır. Bir alt sorgu WHERE, HAVING, FROM sözcükleri içinde kullanılabilir.

5 A LT SORGU KAVRAMı Örnek: Personel numarası “110” olan personelin ücretinden daha fazla ücret alan personel isimlerini listelemek için: SELECT ADI, ÜCRET FROM PERSONEL WHERE ÜCRET > (SELECT ÜCRET FROM PERSONEL WHERE PERSONEL_NO=110);

6 A LT SORGU DÜZENLEME KURALLARı Alt sorgu, ana sorgu içindeki karşılaştırma işlecinin sağında yer almalıdır. FROM sözcüğü içinde tanımlanan sorgular bu kuralın dışındadır. Bir alt sorgu parantez işaretleri içinde yer almalıdır. Alt sorgu ORDER BY sözcüğü içeremez. Bu sorgu sadece ana sorgu içinde yer alabilir. Alt sorgularda iki tür karşılaştırma işleci bulunabilir: a) Tek satır işleçleri b) Çoklu satır işleçleri

7 T EK SATıR ALT SORGULARı Sadece bir değer döndüren alt sorgulardır. İç taraftaki SELECT deyiminden sadece tek bir değer elde edilir. İşleç Anlamı =eşit >büyük >=büyük veya eşit eşit değil

8 T EK SATıR ALT SORGULARı Örnek: Personel numarası “155” olan personelle aynı göreve sahip olan ve “300” numaralı personelin ücretinden daha fazla ücret alan personeli listelemek istiyoruz. SELECT ADI, GÖREVİ, ÜCRET FROM PERSONEL WHERE GÖREVİ= (SELECT GÖREVİ FROM PERSONEL WHERE PERSONEL_NO=155) AND ÜCRET> (SELECT ÜCRET FROM PERSONEL WHERE PERSONEL_NO=3000);

9 G RUP FONKSIYONLARıNıN KULLANıMı Grup fonksiyonları sadece bir değer döndürdüğü için, bu tür fonksiyonlar tek satır alt sorgularında kullanılabilir. Örnek: Personel arasında ortalama ücretten daha fazla ücret alanları listelemek için: SELECT ADI, ÜCRET FROM PERSONEL WHERE ÜCRET > (SELECT AVG(ÜCRET) FROM PERSONEL);

10 H AVıNG ILE GRUP KOŞULLARıNıN TANıMLANMASı Ana sorgu grup fonksiyonu içeriyorsa, doğal olarak grup koşullarının tanımlanması gerekebilecektir. Yani HAVING sözcüğü de kullanılacaktır. Örnek: En fazla ücret alan personelinin ücreti, “30” numaralı bölümün ortalama ücretinden daha fazla olan bölümleri öğrenmek için: SELECT BÖLÜM_NO, MAX(ÜCRET) AS “EN YÜKSEK ÜCRET” FROM PERSONEL GROUP BY BÖLÜM_NO HAVING MAX(ÜCRET) > (SELECT AVG(ÜCRET) FROM PERSONEL WHERE BÖLÜM_NO=30);

11 Ç OKLU SATıR ALT SORGUSU Alt sorgudan bir satır yerine, daha fazla sayıda satır elde ediliyorsa, bu kez sorgu bir çoklu alt sorgusu olarak değerlendirilir. İşleçAnlamı INliste içindeki değerlerden seçme işlemini gerçekleştirir. ANYalt sorgu tarafından döndürülen her bir değer için karşılaştırma işlemini gerçekleştirir. ALLalt sorgu tarafından döndürülen tüm değerlerle karşılaştırma işlemini gerçekleştirir.

12 IN İŞLECİ Bir liste içindeki değerlerden birini seçmek için IN işlecini kullanıyorduk. Örnek: Her bölümdeki en az ücretleri belirleyerek, bunlarla aynı ücreti alan personeli görüntülemek için: SELECT ADI, ÜCRET, BÖLÜM_NO FROM PERSONEL WHERE ÜCRET IN( SELECT MIN(UCRET) FROM PERSONEL GROUP BY BÖLÜM_NO);

13 ANY İŞLECİ Alt sorgu tarafından üretilen her bir değeri ana sorgu içinde belirlenen bir değer ile karşılaştırmak söz konusu ise ANY işleci kullanılır. Bu işleç “=, ” işleçlerinden biri ile birlikte kullanılır. “=ANY” biçimindeki bir tanım IN tanımı ile eşdeğerdir. “ANY” ifadesi en azdan daha büyük anlamında değerlendirilir.

14 ANY İŞLECİ Örnek: En fazla kazanan MEMUR dan daha az maaşı olan personeli listelemek için: SELECT ADI, ÜCRET, GÖREVİ FROM PERSONEL WHERE ÜCRET

15 ALL İŞLECİ Alt sorgu tarafından üretilen tüm değerlerin, ana sorgu için bir girdi olarak kullanılması söz konusu ise ALL işleci kullanılabilir. “>ALL” ifadesi en büyükten daha büyük “

16 ALL İŞLECİ Örnek: Ücreti tüm bölümlerin ortalama ücretinden daha büyük olan personeli listelemek için: SELECT ADI, ÜCRET FROM PERSONEL WHERE ÜCRET >ALL ( SELECT AVG(ÜCRET) FROM PERSONEL GROUP BY BÖLÜM_NO);

17 Ç OK SÜTUNLU ALT SORGULAR Bazı uygulamalarda alt sorgunun birden fazla sütun üretmesi ve koşul içinde bu değerlerin kullanılması söz konusu olabilir. Örnek: SEZİN isimli personelin görevi ve ücretiyle aynı olan personeli listelemek için: SELECT BÖLÜM_NO, ADI, ÜCRET FROM PERSONEL WHERE (GÖREVİ,ÜCRET) IN (SELECT GÖREVİ, ÜCRET FROM PERSONEL WHERE ADI=‘SEZİN’);

18 F ROM SÖZCÜĞÜ IÇINDE ALT SORGU TANıMLAMA Normal olarak bir SELECT deyiminde kullanılabilecek tablolar, yani veri kaynağı FROM sözcüğü içinde tanımlanır. Ancak gerektiğinde bir alt sorgunun sonuçları da tıpkı bir tablo gibi değerlendirilerek, FROM içinde bu sorgu yer alabilir. Örnek: Bir bölümün ortalama ücretinden daha fazla ücret alan tüm personelin ortalama ücretlerini listelemek için: SELECT P.BÖLÜM_NO, P.ADI, P.ÜCRET, S.MAAŞ FROM PERSONEL P, (SELECT BÖLÜM_NO,AVG(ÜCRET) AS MAAŞ) FROM PERSONEL GROUP BY BÖLÜM_NO S WHERE P.BÖLÜM_NO=S.BÖLÜM_NO AND P.ÜCRET>S.MAAŞ;


"KARMAŞIK SORGULAR. A LT SORGU KAVRAMı Karmaşık sorgular, bir sorgu içinde birden fazla SELECT deyiminin kullanılması ile elde edilir. Karmaşık sorgularda," indir ppt

Benzer bir sunumlar


Google Reklamları