İçeriğe atla
CodeItRaw
SQL: Alt Sorgular

Ders 2/2

Buraya kadarki alt sorgular bir kez çalışıp bitiyordu. İlişkili alt sorgu ise dıştaki sorgunun o anki satırına bakar ve her satır için yeniden değerlendirilir: "bu yazarın en az bir kitabı var mı?"

SELECT a.name
FROM authors AS a
WHERE EXISTS (
SELECT 1 FROM books AS b WHERE b.author_id = a.id
);
EXISTS içteki sorgunun en az bir satır döndürüp döndürmediğine bakar; ne döndürdüğü önemli değildir, o yüzden SELECT 1 yazılır. İçteki a.id dış satırdan gelir: bağlantıyı kuran odur. Tersi için NOT EXISTS.

Aynı fikirle "her türün en pahalı kitabı" bulunur: bir kitabı, fiyatı kendi türündeki en yüksek fiyata eşitse seç. Alt sorgu her kitap için o kitabın türünün en yüksek fiyatını hesaplar: WHERE b.price = (SELECT MAX(price) FROM books WHERE genre = b.genre).

Görevler

Görevler sırayla açılır. Hepsini çözünce sonraki ders açılır.

Bu dersin görevleri, önceki dersler bitince açılır. Anlatımı şimdiden okuyabilirsin.

  1. 01

    Satış yapanlar

    SQL sorgusu

  2. 02

    Departmanın zirvesi

    SQL sorgusu

Sırayı beklemeden çözmek istersen bütün problemler kilitsiz açık: Problemler listesi