Sql Subquery (Alt Sorgular) Kullanımı

Muhammet Ali
20 Ekim 2016 Perşembe
1

Sorgu içinde sorgu kümesidir.İç sorgunun dış sorguya değer döndürmesi şeklinde çalışan bütün yapıdır.Şimdi bunu örnekler ile açıklayalım.

//Aşağıdaki sorguda Sicil tablosunda bulunan kişilerin adını,soyadını ve  bulunduğu ilçe adını(İlçe tablosundaki ilceid ile Sicil tablosundaki karşılığı olan (PK) ev_ilce_kodu  eşitliğinde dönen ilçe adı) sorgular.

Select adi, soyadi, (select ilce_adi from ilce where ilceid=ev_ilce_kodu) ilce from Sicil

// Aşağıdaki sorguda Kişi tablosunda bulunan Efe soyadlı kişinin ücretinden büyük ücrete sahip kişileri listeleyen sorgudur.Bu tür  ana sorguda (=, >, >=, <, <=, <>) gibi oparatörler kullanılıyorsa subquery den dönen sonuç tek olmalıdır.


SELECT adi, ücret

FROM Kişi

WHERE  ücret > (SELECT  ücret FROM  Kişi WHERE  Soyadı= 'Efe');

 

Eğer Subquery de birden fazla sonuç döner ise burada IN, ALL ve ANY operatörlerini kullanıcağız.

// departmans tablosunda departman adı Sales olan kayıtların id lerini bul ve employees tablosuna giderek bu id lere eşit employeesleri getir.

IN Kullanımı

Büyüktür küçüktür gibi operatörler ile kullanılmaz. Alt sorguda dönen sonuçlara eşit olanları getirecektir.

SELECT * FROM employees WHERE department_id IN
(SELECT department_id FROM departments WHERE department_name='Sales');

 

ALL Kullanımı

Karşılığı MIN (salary)’dir.

//adı john olanları bulup salarylerine bak.En düşük maaşı bul ve bu koşula uyan employeesleri getir.

SELECT * FROM employees WHERE salary > ALL
(SELECT salary FROM employees WHERE first_name='John' ) ;

ANY Kullanımı

ANY’nin karşılığı MAX (salary)’dir.

//adı john olanları bulup salarylerine bak.En yüksek maaşı bul ve bu koşula uyan employeesleri getir.

SELECT * FROM employees WHERE salary > ANY
(SELECT salary FROM employees WHERE first_name='John' ) ;

 



yorumlar
64x64

d

4 Mart 2020 Çarşamba
Yorum yaz