İç sorgudan, dış sorguya bir veya daha fazla kayıt gönderilebilir. Bu yüzden kullanılan parametreleri tek kayıt döndüren alt sorgular ve çok kayıt döndüren alt sorgular olmak üzere 2 gruba ayrılır.
ALL deyimi iç sorgudan çok kayıt gelen durumlarda kullanılır. İç sorgudan elde edilen sonuçların hepsi için çalışır. ALL ifadesi >=, <=, >, <, !=, <> operatörleri ile birlikte kullanılmalıdır. İç içe sorguların genel kullanımları İÇ İÇE SORGULAR (IN – ANY – ALL ) başlıklı yazıda ayrıntılı olarak anlatılmıştır.
İç içe sorgular personel, birim, unvan, proje, çocuk gibi tabloları içeren bir şirket veritabanı üzerinde örneklenecektir. Şirket veritabanı örneği başlıklı yazıdan ulaşabilirsiniz.
2 numaralı birimdeki personellerin tümünden fazla maaş alan personellerin bilgilerini listeleyin.
1 2 | SELECT * FROM personel WHERE maas > ALL(SELECT maas FROM personel WHERE birim_no=2); |
veya en yüksek maaş alan kişiden yüksek olması, tümünden yüksek olması ile aynı anlama gelmektedir.
1 2 | SELECT * FROM personel WHERE maas > (SELECT MAX(maas) FROM personel WHERE birim_no=2); |
2 numaralı birimdeki personellerin tümünden DAHA AZ maaş alan personellerin bilgilerini listelemek istediğimizde komut şu şekilde değişir:
1 2 | SELECT * FROM personel WHERE maas < ALL(SELECT maas FROM personel WHERE birim_no=2); |
Bu durumda, “tümünden daha az maaş almak” ifadesi, aslında belirtilen grupta en az maaş alandan daha az maaş almakla eşdeğerdir:
1 2 | SELECT * FROM personel WHERE maas < (SELECT MIN(maas) FROM personel WHERE birim_no=2); |
Özet
ALL ifadesinin MIN() ve MAX() fonksiyonları ile kullanımında aşağıdaki formül işinize yarayacaktır:
- İlgili alan herhangi birinden büyük ise;
- … alan > ALL (SELECT alan …)
- … alan > (SELECT MAX(alan) …)
- İlgili alan herhangi birinden küçük ise;
- … alan < ALL (SELECT alan …)
- … alan < (SELECT MIN(alan) …)
One Comment on “SQL Server – ALL ile İç İçe Sorgu Örnekleri”