SQL öğrenmeye çalışıyorum ve EXISTS ifadelerini anlamakta zorlanıyorum. "Var" ile ilgili şu alıntıyla karşılaştım ve bir şey anlamadım:
Var operatörünü kullanarak, alt sorgunuz sıfır, bir veya çok sayıda satır döndürebilir ve koşul, alt sorgunun herhangi bir satır döndürüp döndürmediğini kontrol eder. Alt sorgunun seçme cümlesine bakarsanız, tek bir değişmez değerden (1) oluştuğunu görürsünüz; içeren sorgudaki koşulun yalnızca kaç satır döndürüldüğünü bilmesi gerektiğinden, alt sorgunun döndürdüğü gerçek veriler ilgisizdir.
Anlamadığım şey, dış sorgunun alt sorgunun hangi satırı kontrol ettiğini nasıl bildiği? Örneğin:
SELECT *
FROM suppliers
WHERE EXISTS (select *
from orders
where suppliers.supplier_id = orders.supplier_id);
Tedarikçiden ve siparişler tablosundan gelen kimlik eşleşirse, alt sorgunun doğru döneceğini ve tedarikçilerin tablosundaki eşleşen satırdaki tüm sütunların çıkarılacağını anlıyorum. Anlamadığım şey, yalnızca doğru veya yanlış döndürülüyorsa, alt sorgunun hangi belirli satırın (tedarikçi kimliği 25 olan satır diyelim) yazdırılması gerektiğini nasıl ilettiği.
Bana öyle geliyor ki, dış sorgu ile alt sorgu arasında bir ilişki yok.
