Alt Sorgular
Çoğunlukla bir sorgulamayı bir tablo ile yapmak mümkün olmaz. Bazen
select sorgusundaki şart, başka bir tablodaki verilere göre sınırlandırılmak istenirse aşağıdakine benzer bir sorgu yapısı kullanılması gerekir.
PHP- Kodu
SELECT
*
FROM
kitap
WHERE
turno in (
SELECT turno
FROM tur
WHERE turad='ROMAN'
)
Burada önce içteki sorgu çalışıp turnolar
ROMAN türünün numarası alınır.
(Bu örnekte bir tane fakat birden fazlada eşleşen tür olabilir.)
Önemli not: Alt sorgularda eşleşen alan sayısı (alan içindeki değerler birden fazla olabilir.) tek olmalıdır.
Birden fazla alanda eşleşme yapılacaksa her şart için ayrı alt sorgular yapılıp
AND, OR operatörleri ile birleştirme yapılabilir.
Örnek: Fıkra ve
hikaye türündeki kitapların adını ve türünü listeleyin.
PHP- Kodu
select kitap.kitapadi, tur.turadi from kitap,tur
where kitap.turno=tur.turno
and tur.turadi in ('Hikaye','Fıkra')
Örnek: ROMAN türünde ve ortalama sayfa sayısından büyük olan kitapları listeleyen sorguyu yazınız.
Kod
SELECT
*
FROM
kitap
WHERE
sayfasayisi > (
SELECT AVG(sayfasayisi)
FROM kitap
WHERE
turno =(
SELECT
turno
FROM
tur
WHERE turad='ROMAN'
)
)
AND
turno=(
SELECT
turno
FROM
tur
WHERE turad='ROMAN'
) İçteki döngünün çok sayıda değer döndüreceği zamanlarda
In, Any ve
All komutları sıkça kullanılmaktadır.
SQL IN Komutu In komutu belirtilen değerlerden herhangi birine eşit olan kayıtları listelemeyi sağlar.
Örnek: Fıkra ve
hikaye türündeki kitapların adını ve türünü listeleyin.
PHP- Kodu
select kitap.kitapadi, tur.turadi from kitap,tur
where kitap.turno=tur.turno
and tur.turadi in ('Hikaye','Fıkra')
SQL ANY ve ALL Komutları ANY ve ALL operatörleri
WHERE veya
HAVING yan tümcesiyle kullanılır.
SQL ANY Komutu Alt sorgu değerlerinden herhangi biri koşulu karşılıyorsa,
ANY işleç
true değerini döndürür.
SQL ALL Komutu
Tüm alt sorgu değerleri koşulu karşılıyorsa
ALL işleci
true değerini döndürür.
Örnek: Tür numarası
3 olan kitaplardan en büyük sayfa sayından büyük olan kitapları listeler.
PHP- Kodu
select * from kitap
where sayfasayisi > ALL
(select sayfasayisi FROM kitap
where turno=3)
Alternatif sorgu: MAX fonksiyonu ile daha temiz bir sorgu elde edebiliriz.
PHP- Kodu
select * from kitap
where sayfasayisi >
(select max(sayfasayisi) FROM kitap
where turno=3)
Örnek: Tür numarası
3 olan en düşük sayfa sayısı olan kitabın sayfa sayısından büyük olan kitapları listeler.
PHP- Kodu
select * from kitap
where sayfasayisi > ANY
(select sayfasayisi FROM kitap
where turno=3)
Alternatif sorgu: MIN fonksiyonu ile daha temiz bir sorgu elde edebiliriz.
PHP- Kodu
select * from kitap
where sayfasayisi >
(select min(sayfasayisi) FROM kitap
where turno=3)
Kaynak :
[Üye Olmadan Linkleri Göremezsiniz. Lütfen Üye Olmak için TIKLAYIN...]