دستور Having :

از این دستور برای افزودن شرط به توابع درون ساخته SQL استفاده می شود ، زیرا از دستور Where نمی توان برای کار با مقادیر خروجی توابع درون ساخته SQL استفاده کرد .
به عبارت دیگر Having برای اعمال شرط به ستون ها اعمال می شود و همان کاری را می کند که Where در رکوردها انجام می دهد .با مثال های زیر استفاده از دستور Having را بررسی می کنیم :
نکته : دستور Having معمولا با Group By می آید .
توجه : از داده های جداول زیر در مثال های این صفحه استفاده می کنیم :

Student Table
Student ID Name Family Major City Grade
۴۱۲۵۲۲۱۴ Ahmad Rezaee Hard Ware Tehran ۱۸
۱۰۷۲۴۱۱۳ Ehsan Amiri Soft Ware Karaj ۱۴
۱۰۲۵۴۸۶۱ Zahra Hosini Hard Ware Tehran ۱۷
۲۷۳۶۵۱۸۷ Sahar Ahmadi Soft Ware Bam ۱۶
۳۵۶۵۴۴۱۵ Hesam Razavi Soft Ware Tehran ۱۹

 

Courses Table
Course ID Co Title Credit Co Type
۱۰۱۱ پایگاه داده ۳ عملی
۱۰۱۲ مباحث ویژه ۳ عملی
۱۰۱۳ زبان تخصصی ۲ نطری

 

Selection Table
Student ID Course ID Term Year Grade
۴۱۲۵۲۲۱۴ ۱۰۱۱ ۲ ۸۵ – ۸۶ ۱۶
۱۰۷۲۴۱۱۳ ۱۰۱۱ ۲ ۸۵ – ۸۶ ۱۴
۴۱۲۵۲۲۱۴ ۱۰۱۲ ۱ ۸۵ – ۸۶ ۱۷
۱۰۷۲۴۱۱۳ ۱۰۱۲ ۱ ۸۵ – ۸۶ ۱۱
۱۰۲۵۴۸۶۱ ۱۰۱۳ ۲ ۸۵ – ۸۶ ۱۳
۱۰۲۵۴۸۶۱ ۱۰۱۱ ۲ ۸۴ – ۸۵ ۸
۲۷۳۶۵۱۸۷ ۱۰۱۲ ۱ ۸۴ – ۸۵ ۱۹
۲۷۳۶۵۱۸۷ ۱۰۱۳ ۱ ۸۴ – ۸۵ ۱۶
۳۵۶۵۴۴۱۵ ۱۰۱۱ ۲ ۸۴ – ۸۵ ۹
۳۵۶۵۴۴۱۵ ۱۰۱۳ ۲ ۸۴ – ۸۵ ۱۷

مثال : از جدول Students , Selection مجموع نمرات و نام و نام خانواگی دانشجویانی که مجموع نمرات آنها بیش از ۲۵ است را نمایش دهید :

مثال
Select Name , Family , Sum ( Selection.Grade ) As مجموع نمرات
From Students , Selection
Where Students.Student ID = Selection.Student ID
Group By Name , Family
Having Sum ( Selection.Grade ) > 25
Order By Family;
کد
Name Family مجموع نمرات
Sahar Ahmadi ۳۵
Ahmad Rezaee ۳۳
خروجی

مثال : از جدول Selection و Courses نام دروسی را ارائه دهید که ۴ بار توسط دانشجویان انتخاب شده باشد :

مثال
Select CoTitle , Count ( Selection.Course ID ) As تعداد انتخاب
From Selection , Courses
Where Selection.Course ID = Courses.Course ID
Group By CoTitle
Having Count ( Selection.Grade ) = 4 ;
کد
CoTitle تعداد انتخاب
پایگاه داده ۴
خروجی