Alt Sorgular
Bir select sorgusundaki kısıtlama, başka bir tablodaki verilere göre yapılmak istenirse aşağıdaki gibi bir sorgu yapısı kullanılabilir.
SELECT * FROM tablo1
WHERE alanX=
( SELECT alanY FROM tablo2
WHERE alanY=deger )
Burada önce içteki sorgu çalışıp tablo2'den bir değer döndürecek, ardından dıştaki sorgu çalışacaktır.
Örnek: sinavlar tablosunda birinci sınav notu, sınıf ortalamasından daha yüksek olan kayıtları listelemek için şu sorgu kullanılabilir.
SELECT adi, soyadi FROM sinavlar
WHERE sinav1 >= ( SELECT AVG(sinav1) FROM sinavlar )
Örnek: Aşağıdaki sorgu çalıştırıldığında;
İçteki sorgu tarafından maasi 2000 ve üzeri olan çalışanların numaraları döndürülür, ardından dıştaki sorgu tarafından personelNo alanı bu değerlerden biri olan kayıtlar listelenir.
SELECT adi, soyadi FROM personel
WHERE personelNo IN
( SELECT personelNo FROM ucretler
WHERE maasi >= 2000)
İçteki döngünün çok sayıda değer döndüreceği zamanlarda In, Any ve All komutları sıkça kullanılmaktadır.
In Komutu
In komutu belirtilen değerlerden herhangi birine eşit olan kayıtları listelemeyi sağlar.
Örnekte doğum yeri istanbul, Ankara ya da İzmir olan öğrencilerin listelenmesi sağlanmıştır.
SELECT * FROM ogrenciler WHERE dgYeri IN ("İstanbul", "Ankara", "İzmir")
Any Komutu
>Any komutu verilen değerlerin herhangi birinden büyük olan (en küçüğünden büyük) kayıtları listelemeyi sağlar.
<Any komutu ise verilen değerlerin herhangi birinden küçük olan (en büyüğünden küçük) kayıtları listelemeyi sağlar.
=Any komutu ise verilen değerlerden herhangi birine eşit olan kayıtları listelemeyi sağlar. >=Any ve <=Any gibi de kullanılabilir.
Örnek: En düşük maaşlı Mühendisin maaşından daha fazla maaş alan personellerin ad ve soyadlarını listelemek için:
SELECT adi, soyadi FROM ucretler
WHERE maasi >ANY
( SELECT maasi FROM ucretler
WHERE gorevi="Mühendis" )
All Komutu
Belirtilen şartların tamamının sağlanması istendiğinde kullanılır.
>All komutu verilen değerlerin hepsinden büyük olan (en büyüğünden büyük) kayıtları listelemeyi sağlar.
<All komutu ise verilen değerlerin hepsinden küçük olan (en küçüğünden küçük) kayıtları listelemeyi sağlar.
>=All ve <=All gibi kullanımları da vardır.
Örnek: En yüksek maaşlı Mühendisin maaşından daha fazla maaş alan personellerin ad ve soyadlarını listelemek için:
SELECT adi, soyadi FROM ucretler
WHERE maasi >ALL
( SELECT maasi FROM ucretler
WHERE gorevi="Mühendis" )
sql alt sorgular, sql iç içe sorgular, sql alt sorgu örnekleri, in, any, all, sql in, sql any, sql all
KONU İLE İLGİLİ ÖRNEKLER
Bu konu ile ilgili örnek bulunmamaktadır.
111386 kez okundu.