Subquery (alt sorgu), bir SQL sorgusu içinde başka bir sorgunun içine gömülü olarak yazılan sorgudur. T-SQL’de subquery’ler çeşitli şekillerde ve farklı amaçlarla kullanılabilir.
Şimdi uygulamalı bir şekilde subquery komutlarını görmüş olacağız. Subquery join yapılarıyla aynı mantıkta çalışmaktadır.
Normal bir komut ile Adı Steven ile olan personelin SatisTarihi ve SatisID değerlerini getirmektedir.
select s.SatisID,s.SatisTarihi from Personeller p join Satislar s on p.PersonelID=s.PersonelID where p.Adi='Steven'
Yukarıdaki işlemi subquery olarak gerçekleştirelim. Aşağıda join ile yapılan işlemin aynısı subquery ile gerçekleştiririz.
select s.SatisID,s.SatisTarihi from Satislar s where s.PersonelID=(select PersonelID from Personeller where Adi='Steven')
Subquery olan sonuç birden fazla kayıt dönmemesi lazım. Sadece bir kayıt eklenmesi gerekmektedir.
select *from Personeller where adi=(select Adi from Personeller where UnvanEki= 'Dr.' )
Yukarıdaki sorguda select Adi from Personeller where UnvanEki= 'Dr.'
ifadesi çalıştırıldığında sonuç dönmektedir.

Eğer yukarıdaki select sorgumuz birden fazla değer dönerse sorgumuz hata mesajı üretmektedir.

Hata mesajı:
Msg 512, Level 16, State 1, Line 5
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Subquery’ler T-SQL’de güçlü bir araçtır ve uygun şekilde kullanıldığında karmaşık veri sorgulama ihtiyaçlarını karşılamada oldukça etkilidir.
Başka makalede görüşmek dileğiyle..
“Şüphesiz peygamberlerimize ve iman edenlere, hem dünya hayatında, hem şahitlerin şahitlik edecekleri günde yardım ederiz.” Mü’min Suresi-51