HAVING Kullanımı

Having cümleciği ile grup kriterleri tanımlanır, gruplanmış kolonlardaki veriler where cümleciği ile filtrelenemez, bunun yerine having cünleciği kullanılır.


Örneğin, öğrenciler tablosu aşağıdaki gibi olsun.

+-----+-----+------+

| id  | adi |notu  |

+-----+-----+------+

| 123 |Veli |60    |

| 124 |Veli |70    |

| 125 |Ali  |80    |

| 126 |Ali  |30    |

| 127 |Hasan|61    |

+-----+-----+------+

not ortalaması 60 dan büyük olan öğrencileri bulmak isteyelim.

mysql> SELECT adi, AVG(notu) FROM ogrenciler GROUP BY adi HAVING AVG(notu) > 60

+-----+------+

| adi |notu  |

+-----+------+

|Hasan|61    |

|Veli |65    |

+-----+------+

4 Yorum

  1. ali oygur diyor ki:

    Merhaba,

    dostum ben şöyle bir sorgu kullandım çalıştı ?

    SELECT p. * , ptc.category_id
    FROM product_to_category AS ptc
    JOIN products AS p ON ( ptc.product_id = p.product_id )
    WHERE p.product_id = ’48′
    GROUP BY p.product_id
    LIMIT 0 , 30

    gördüğün gibi p.product_id ye göre guruplama yapıyorum. ve yine bu alan için WHERE kullanıyorum

    dedimki acaba JOIN kullandığım içinmi oldu ve şöyle bir sorgu cümleciği yazdım.

    SELECT * FROM product_to_category WHERE category_id = ’6′ GROUP BY category_id

    yine çalıştı.

    Çalıştıdan kastım sonuç döndürüyor hata vermiyor.

    Acaba mysql sürümündenmi kaynaklanıyor

    Kullandığım mysql sürümü 5.0.51

    Bu konuda beni aydınlatırsan teşekkür ederim.

    Saygılar.

  2. Zihni diyor ki:

    where ile belirtiğin koşuldan dönen sonuçların guplanması lazım senin yazdığın şekilde.

  3. hasan şamil bozdemir diyor ki:

    Bu having sözcüğünün kullanımı bir kaç kolon üzerindeki işlemin sorgulanmasında kullanılmak üzere tasarlanmıştır düşüncesindeyim.Mesela öğrencinin 123 kodlu dersten 3 notu olduğunu düşünürsek;
    select adi
    from ogrenciler
    group by adi
    having ((((notu1+notu2)*40)+(notu3*60))/100)>50
    gibi olması mantık dahili değil midir?

  4. hasan kamil tozdemir diyor ki:

    hayır, having cümleciği fonksiyon ile çekilen verileri filtrelemek için kullanılır.Yani Where cümleciği gibi. Ancak Where cümleciği fonksiyonlar ile kullanılmamaktadır.

Yorum Yaz