Oracle Ders 33 – SubQueries – 04 Nested SubQuery
Merhaba Arkadaslar,
Bu yazimda nested (icice) subquery konusundan bahsedecegim. Onceki derslerde inceledigimiz gibi altsorgularimizi from, where ya da having cumlecikleriyle beraber kullanabiliriz.Oracle 11 G where cumlecigi ile 255 derinlige kadar subquery(altsorgu) e izin verir. From cumleciginde ise sonsuz derinlige kadar gidebilir.
Icice sorgu yazarken sunlara dikkat etmek gerekir ;
- Tam olarak neyi bulmaya calisiyoruz, hedefimiz nedir.
- En icerdeki sorguyu ilk yazalim.
- Daha sonrasinda altsorgudan dis sorguya donen alan/veri/deger dikkatli inceleyelim.
En fazla kitap siparisi veren musterinin bilgilerini getirelim..
Bunun icin once orderitems tablosundan yararlaniriz, verilen siparisleri musterilere gore gruplayalim ve en fazla siparis vereni bulalim.
select max(count(*)) from orderitems group by order#; //4
Daha sonrasinda bu en ic sorgudan disariya bu degeri dondurelim.
select order# from orderitems group by order# having count(*) = ( select max(count(*)) from orderitems group by order#);
En fazla (4) siparis veren musterilerin idlerine (order#) ulastik. Sira geldi isim bilgisine. Bunun icin musteri tablomuzla (customers) ile siparis(orders) tablomuzu birlestirmemiz gerekir ve order# yani siparis veren musterinin id numarasi uzerinden istedigimiz sonucu elde edebiliriz.
select customer# , lastname , firstname from customers join orders using(customer#) where order# in (select order# from orderitems group by order# having count(*) = ( select max(count(*)) from orderitems group by order#));
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust
Leave a Reply