Yazıda SQL alt sorgu veya ic ice sorgu olarak bilinen SQL sorguları, MySQL, SQL Server, Oracle vb. sistemler icin anlatılmıştır.

Alt sorgular SQL icerisinde kullanılan SELECT sorgusunun ozel bir turudur.

Veri tabanı tasarımı sırasında verilerin tekrarını onlemek amacıyla nesnelere parcalara ayrılır.

Ayrılan parcalar INNER Join, LEFT Join, RIGHT Join kullanılarak birleştirilerek istenilen veriye ulaşılabilir.

Alt sorgularda benzer şekilde verileri birleştirmek icin kullanılır.

İc ice sorgular genellikle bir alt ve ust sorgudan oluşur.

Alt sorgu sınırı yoktur.

Alt sorgu ile bir tablodaki değer elde edilir ve bu değer ust sorguda kullanılır.

Alt sorguların daha iyi anlaşılabilmesi icin bir ornek vermek gerekirse; Veri tabının da kategoriler ve urunler olmak uzere iki tablo olduğunu varsayalım.

Alt sorguları kullanarak urunler tablosunda bulunan Bilgisayar urunlerini listeleyelim.


Bu işlem icin ilk olarak alt sorgu ile kategoriler tablosunda Bilgisayar kaydına ait sıra numarasını (ID) alıp daha sonra bu sıra numarasını ust sorguda kullanabiliriz.

Alt sorgu

Kod:
SELECT kat_id FROM kategoriler WHERE kat_adi = 'Bilgisayar'

Ust sorgu


Kod:
SELECT * FROM urunler WHERE kat_id = ( Alt sorgu )

Alt ve ust sorguyu birleştirelim.


Kod:
SELECT * FROM urunler WHERE kat_id = (SELECT kat_id FROM kategoriler WHERE kat_adi = 'Bilgisayar')

Not: Alt sorgunun sadece bir değer dondurduğune dikkat edilmedilir.

Alt sorgu birden fazla değer dondururse IN anahtar kelimesi kullanılır.


Alt sorguları kullanarak bir tablodaki ortalama değerden fazla veya az, en buyuk değer, en kucuk değer vb. değerler alınarak kullanılır.

Orneğin; Bir ders ortalamasından yuksek alan oğrencileri listelemek, bir firmada calışan Muhendis ve Pazarlamacı listelemek icin kullanılabilir.