Sql de bir fonksiyondan dönen değere göre koşul ifadesi yazılmak istenirse WHERE kullanımı hata verecektir. Bu tür koşul ifadeleri için HAVING kullanılmalıdır. HAVING ifadesi GROUP BY ifadesinden sonra ve varsa ORDER BY ifadesinden önce yazılmalıdır. HAVING ifadesinden sonra WHERE kullanımında olduğu gibi koşul yazılmalıdır.
Örnek 1: Örneğimizde borç ve alacak miktarları bulunan şirketlerin bulunduğu Bakiye tablosunu kullanacağız. Burada şirketlere ait borç ve alacak tutarlarının hesaplanarak borcu 3000′ den fazla olan şirketlerin listelenmesini sağlayacağız. Bakiye hesaplama işlemini yaparken SUM() fonksiyonundan faydalanacağız.
Tablomuz:
Toplam borcu 3000 TL den fazla olan müşterilerin listesini gösteren SQL sorgumuz:
1 2 3 4 5 |
SELECT musteri,(SUM(borc)-SUM(alacak)) AS BAKİYE FROM Bakiye GROUP BY musteri HAVING (SUM(borc)-SUM(alacak))>3000 |
Örnek 2: Bu örneğimizde kutuphane veritabanında kitap ve tur tablolarını kullanacağız.Yani birbiriyle ilişkili 2 tabloda HAVING kullanımını göreceğiz. Aynı kategoride 6’dan fazla kitap bulunan kategori numarası ve kategori adını listelenmesini sağlayacağız.
Kullanacağımız tablolar aşağıdaki gibi olacaktır.
SQL Sorgumuz ve Ekran Çıktısı aşağıdaki gibi olacaktır.
1 2 3 4 5 6 |
SELECT kitap.turno,tur.turadi, COUNT(*) AS SAYI FROM kitap,tur WHERE kitap.turno=tur.turno GROUP BY kitap.turno,tur.turadi HAVING COUNT(*)>6 |
abi bana ulaşabilirmisin senin bana yardım edebilecegini düşünüyorum bana mail ile ulaşabilirsin bana dönersen sevinirim