İç içe SELECT Kullanımı

Aşağıdaki gibi üç tablomuz olduğunu düşünelim.

Maaşı 3000 TL'den yüksek olan personelleri seçmek için şöyle bir sorgu yazabiliriz.

SELECT p.ADI, p.SOYADI, m.MAAS FROM 
tblpersonel p, tblmaas m, tbldepartman d
WHERE  p.personelID= m.personelID
AND d.departmanID= p.departmanID
AND d.DEPARTMAN='Yönetim'
AND m.MAAS>3000 

Yönetim Departmanındaki personellerin ortalama maaşını bulmak isteyelim. Bunun için AVG fonksiyonundan yararlanıyoruz.

SELECT  AVG(m.MAAS)
FROM tblmaas m, tbldepartman d, tblpersonel p
WHERE p.departmanID=d.departmanID
AND p.personelID= m.personelID
AND d.DEPARTMAN='Yönetim' 
GROUP BY d.DEPARTMAN


Şimdi de Yönetim bölümünde yer alan personellerden maaşı Yönetim bölümünün ortalama maaşından yüksek olan personelleri maaşlarıyla birlikte listelemek isteyelim. 

SELECT p1.ADI, p1.SOYADI, m1.MAAS FROM 
tblpersonel p1, tblmaas m1, tbldepartman d1
WHERE  p1.personelID= m1.personelID
AND d1.departmanID= p1.departmanID
AND d1.DEPARTMAN='Yönetim'
AND m1.MAAS>(
SELECT  AVG(m.MAAS)
FROM tblmaas m, tbldepartman d, tblpersonel p
WHERE p.departmanID=d.departmanID
AND p.personelID= m.personelID
AND d.DEPARTMAN='Yönetim' 
GROUP BY d.DEPARTMAN)

Yukarıdaki sorguda aslında daha önce yaptığımız iki ayrı sorguyu birleştirdik. Yalnız alias(takma isim) ifadelerinin karışmaması için tblpersonel tablosunu birinde p, diğerinde p1 olarak kısalttık.

Mutlu kodlamalar,
Oğuzhan TAŞ
Kasım, 2018

 
Bookmark and Share