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#));


oracle ders 33 subquery

Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
injavawetrust

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *