SQL Alt Sorgular (İç İçe Sorgular)


Twitter'da Paylaş Favorilerime Ekle

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