İç 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.
ANY deyimi iç sorgudan çok kayıt gelen durumlarda kullanılır. İç sorgudan elde edilen sonuçlardan en az biri için çalışır. ANY ifadesi =, >=, <=, >, <, operatörleri ile birlikte kullanılmalıdır. ANY ifadesi kullanıldığı operatöre herhangi biri anlamı katar. İç 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.
4 numaralı bölümde çalışan herhangi bir personelden daha fazla maaş alan personellerin bilgilerini listeleyin.
NOT: 15 ve 18 numaralı personeller sorgu kriterine uyduğu için listelenmeyecektir.
1 2 | SELECT * FROM personel WHERE maas > ANY(SELECT maas FROM personel WHERE birim_no=4); |
veya en düşük maaş alan kişiden yüksek olması, herhangi birinden yüksek olması ile aynı anlama gelmektedir.
1 2 | SELECT * FROM personel WHERE maas > (SELECT MIN(maas) FROM personel WHERE birim_no=4); |
Bununla birlikte HERHANGİ BİRİNDEN KÜÇÜK maaş alanların sorgusunu yaparken yalnızca işaret değişir ve sorgu şu şekilde olur:
1 2 | SELECT * FROM personel WHERE maas < ANY(SELECT maas FROM personel WHERE birim_no=4); |
Bu sorgunun MAX() fonksiyonu ile yapmak istersek sorguyu şu şekilde değiştirmek zorunda kalırız:
1 2 | SELECT * FROM personel WHERE maas < (SELECT MAX(maas) FROM personel WHERE birim_no=4); |
Özet
ANY 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 > ANY (SELECT alan …)
- … alan > (SELECT MIN(alan) …)
- İlgili alan herhangi birinden küçük ise;
- … alan < ANY (SELECT alan …)
- … alan < (SELECT MAX(alan) …)
One Comment on “SQL Server – ANY ile İç İçe Sorgu Örnekleri”