Postgresql Where Kullanımı
In ve not in, any, some, all
IN ve NOT IN Kullanımı
Bir veri kümesini belli bir alanında içeren kayıtları bulmak istediğimizde, IN sözcüğü kullanılırız.
Örnek:
1,5 ve 6 nolu kitapların ödünç hare¬ketlerini görmek için
FROM odunc
WHERE kitapNo=1 OR kitapNo=5 OR kitapNo=6;
Yerine
FROM odunc
WHERE kitapNo IN(1,5,6);
Kullanımı daha kolaydır.
Örnek:
Dışarıdaki kitapların numaralarını ödünç tablosundan çekecek bir sorgu yazalım(GeldiMi=0 olan kitaplar dışarıda olan kitaplar. Birileri tarafından ödünç alınmış ve henüz iade edilmemiş demektir.)
Ve bu sorguyu, kitaplar tablosundan, karşılık gelen kitap numaralarını seçecek şekilde IN() komutuna girdi ürettirelim:
FROM Kitap
WHERE kitapNo IN(
SELECT kitapNo FROM odunc WHERE geldiMi=0
);
Örnek:
Aynı yöntem ile içerdeki kitaplarımızı bulalım:
İçerideki kitaplar, dışarıda olmayan kitaplardır. Bundan dolayı da yukarıda içerde kullandığımız sorgu aynen duracak ama bu sefer kitap numaraları bunlara eşit olmayan kitapların listesini bulacağız.
FROM Kitap
WHERE kitapNo NOT IN(
SELECT kitapNo FROM odunc WHERE geldiMi=0
);
ANY, SOME, ALL Kullanımı
Bazı iç içe sorgularda, SOME, ANY veya ALL deyimi ile dışarıdaki SELECT ifadesinin seçeceği kayıtlar karşılaştırma kriterine göre kullanılabilir.
ANY veya SOME :Dışarıdaki SELECT ifadesi sonucunda çıkacak kayıtlar, içerideki SELECT ifadesi ile seçilen alan değerlerinden en az birine göre kıyası sağlıyorsa ( küçük,büyük, eşit, büyük eşit, küçük eşit) seçilir.
Örnek:
3,5 ve 11 nolu kitapların herhangi birinden kalın olan ve kitap no da 11’den büyük olan kitapların listesini bulalım:
FROM Kitap
WHERE sayfaSayisi > ANY( SELECT sayfaSayisi
FROM Kitap
WHERE kitapNo IN(3,5,11)
)
AND kitapNo>11
ALL: Dışarıdaki SELECT ifadesi sonucunda çıkacak kayıtlar, içerideki SELECT ifadesi
38 BYTE Veritabanı Programlama 1 ile seçilen alan değerlerin tümüne göre kıyası sağlıyorsa ( küçük,büyük, eşit, büyük eşit, küçük eşit) seçilir.
Örnek:
3,5 ve 11 nolu kitapların tamamından kalın olan ve kitap no da 11’den büyük olan kitapların listesini bulalım:
FROM Kitap
WHERE sayfaSayisi > ALL( SELECT sayfaSayisi
FROM Kitap
WHERE kitapNo IN(3,5,11)
)
AND kitapNo>11
Uğurcan Şahin