SQL Server – İç İçe Sorgular (IN – ANY – ALL)

MSSQL’de bazı durumlarda iç içe sorgu kullanılması gerekebilir. İçte bulunan SELECT komutunun bulduğu sonuç, dıştaki ana sorguya gönderilerek dıştaki sorgunun işlevini gerçekleştirmesi sağlanır. Dış sorguya (ana sorgu) ait WHERE veya HAVING koşullarından sonra iç sorgu (alt sorgu) kullanılabilir.

İç İçe Sorgu Yazma Kuralları:

  1. İç sorgu (alt sorgu), dış sorgu (ana sorgu) içinde kullanılan karşılaştırma operatörünün sağına yazılmalıdır.
  2. İç sorgu parantez içinde yazılmalıdır.
  3. İç sorguda noktalı virgül kullanılmaz. Noktalı virgül dış sorguya aittir.
  4. İç sorgu içinde ORDER BY kullanmak çoğunlukla gereksizdir.
  5. İç sorgudan gelen kayıt sayısına uygun karşılaştırma operatörü kullanılmalıdır.

İç 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 ayırabiliriz.

A. Tek Kayıt Döndüren Alt Sorgular

Bu tür sorgular dış sorguya tek bir değer döndürür. Tek değer döndüğü için ana sorguda = , >=, <=, >, <, !=, <> operatörleri kullanılarak sorgulama yapılır.

Genel kullanım şekilleri aşağıdaki gibidir:

B. Çok Kayıt Döndüren Alt Sorgular

Bu tür sorgular dış sorguya birden fazla değer döndürür. Çok değer döndüğü için dış sorguda IN, ANY, ALL deyimleri kullanılarak sorgulama yapılır.

B1. İç İçe Sorgularda IN Kullanımı:

İç sorgudan elde edilen sonuçlardan herhangi birine eşit olan kayıtları getirir. Daha önce anlatılan IN Deyimi Kullanımı ile aynı mantıkta çalışmaktadır.

Genel kullanım şekilleri aşağıdaki gibidir:

B2. İç İçe Sorgularda ANY Kullanımı:

İç 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. SOME deyimi ile eşdeğerdir. ANY deyimi kullanımı ve örnekleri için tıklayınız.

=ANY(iç sorgu) : Alt sorgudan elde edilen sonuçlardan herhangi birine eşit olan kayıtları ifade eder. IN ifadesi ile aynı işlemi gerçekleştirir.

>ANY(iç sorgu) : Alt sorgudan elde edilen sonuçlardan herhangi birinden büyük kayıtları ifade eder.

>=ANY(iç sorgu) : Alt sorgudan elde edilen sonuçlardan herhangi birine eşit veya büyük kayıtları ifade eder.

<ANY(iç sorgu): Alt sorgudan elde edilen sonuçlardan herhangi birinden küçük kayıtları ifade eder.

<=ANY(iç sorgu): Alt sorgudan elde edilen sonuçlardan herhangi birine eşit veya küçük kayıtları ifade eder.

!=ANY(iç sorgu) veya <> ANY(iç sorgu): Alt sorgudan elde edilen sonuçlardan herhangi birinden farklı anlamı katar ancak bu kullanım mantıklı değildir. Çünkü Herhangi birinden farklı şekilde kullanıldığında tüm kayıtlar istisnasız gelecektir. Dönen herhangi kayıttan birine bile eşit olsa diğerlerinden farklı olacağı için şartımız tüm kayıtları listeleyecektir.

Genel kullanım şekilleri aşağıdaki gibidir:

B3. İç İçe Sorgularda ALL Kullanımı:

İç sorgudan elde edilen sonuçların hepsi için çalışır. ALL ifadesi >=, <=, >, <, !=, <> operatörleri ile birlikte kullanılmalıdır. ALL deyimi kullanımı ve örnekleri için tıklayınız.

=ALL(iç sorgu): Alt sorgudan elde edilen sonuçlardan hepsine eşit olan kayıtları ifade eder. Ancak bu şekilde kullanılan şart ifadesinde herhangi bir sonuç dönmeyecektir. Herhangi bir değerin tüm dönen sonuçlara eşit olması mümkün değildir. ALL ifadesi ile eşit (=) operatörü kullanılmaz.

>ALL(iç sorgu): Alt sorgudan elde edilen sonuçların hepsinden büyük kayıtları ifade eder.

<ALL(iç sorgu): Alt sorgudan elde edilen sonuçların hepsinden küçük kayıtları ifade eder.

!=ALL(iç sorgu) veya <>ALL(iç sorgu): Alt sorgudan elde edilen sonuçların hepsinden farklı olan kayıtları ifade eder.

Genel kullanım şekilleri aşağıdaki gibidir:

About Seçil ŞEKERCİ HÜSEM

2010 yılından bu yana Bilişim Teknolojileri Öğretmeni olarak meslek liselerinde görev yapmaktayım.

View all posts by Seçil ŞEKERCİ HÜSEM →

3 Comments on “SQL Server – İç İçe Sorgular (IN – ANY – ALL)”

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.