Hurriyet

22 Haziran 2012 Cuma

İlişkili Alt İfadeler (Correlated Subqueries)

İlişkili alt sorgular özel bir sorgu bir biçimidir. 2 sorgunun birbirleriyle ilişkili hale getirilmesidir. 2 veya daha fazla tablo arasında karşılaştırma yapmak istediğimizde yararlı olabilir.

Örneğin:

select <kolon1>,<kolon2>
from <tablo1> Outer_table
where <kolon1> operator (select  <kolon1>,<kolon2> from <tablo2>
                                            where <ifade1>=Outer_table.<ifade2>);

Burada outer_table ifadesi aslında bir alias (takma ad)'dır.

Bu sorgularda ayrıca inceleyeceğimiz 1 tane operatör vardır. Bu da "exists" operatörüdür. "Exists" operatörü sorgumuzun sonucunda herhangi bir cevap alıp alamadığımızı kontrol eder. Eğer bir cevap bulunursa alt sorgu çalıştırılmaya devam edilmez ve üst sorgunun sonucu döndürülür. Eğer ki cevap bulunamazsa  alt sorgunun sonuna kadar ilerleme devam ettirilir ve bulunmadığı takdirde de üst sorgu çalıştırılmaz ve hiçbir sonuç bulunamadığına dair bir ifade döndürülür.

Select first_name from departments d
where exists( Select 'Berke' from employees where first_name=d.first_name);

Üstteki ifadede Oracle "Berke" ismini veri tabanında arayacak. Bulamaması halinde üstteki sorguyu çalıştıramayıp , sonuç döndüremeyecek. Halbuki "exists" operatörü yerine "not exists" operatörü bulunsaydı; o zaman da direk üst ifade çalıştırılıp, bellirli bir sonuç döndürülecekti. Bu haldeki ifade de aşağıdaki sorguya benzeyecekti.

"Select first_name from departments;"

Hiç yorum yok:

Yorum Gönder