1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

دستور Having

شروع موضوع توسط hector2141 ‏26/7/13 در انجمن SQL

  1. کاربر ارشد

    تاریخ عضویت:
    ‏6/9/12
    ارسال ها:
    14,323
    تشکر شده:
    2,698
    امتیاز دستاورد:
    0
    حرفه:
    daneshjo
    دستور Having :

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

    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 6"] Student Table[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Student ID[/TD]
    [TD="class: header"] Name[/TD]
    [TD="class: header"] Family[/TD]
    [TD="class: header"] Major[/TD]
    [TD="class: header"] City[/TD]
    [TD="class: header"] Grade[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 41252214[/TD]
    [TD="class: body"] Ahmad[/TD]
    [TD="class: body"] Rezaee[/TD]
    [TD="class: body"] Hard Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 18[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10724113[/TD]
    [TD="class: body"] Ehsan[/TD]
    [TD="class: body"] Amiri[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Karaj[/TD]
    [TD="class: body"] 14[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10254861[/TD]
    [TD="class: body"] Zahra[/TD]
    [TD="class: body"] Hosini[/TD]
    [TD="class: body"] Hard Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 17[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 27365187[/TD]
    [TD="class: body"] Sahar[/TD]
    [TD="class: body"] Ahmadi[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Bam[/TD]
    [TD="class: body"] 16[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 35654415[/TD]
    [TD="class: body"] Hesam[/TD]
    [TD="class: body"] Razavi[/TD]
    [TD="class: body"] Soft Ware[/TD]
    [TD="class: body"] Tehran[/TD]
    [TD="class: body"] 19[/TD]
    [/TR]
    [/TABLE]

    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 4"] Courses Table[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Course ID[/TD]
    [TD="class: header"] Co Title[/TD]
    [TD="class: header"] Credit[/TD]
    [TD="class: header"] Co Type[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 1011[/TD]
    [TD="class: body"] پايگاه داده[/TD]
    [TD="class: body"] 3[/TD]
    [TD="class: body"] عملی[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 1012[/TD]
    [TD="class: body"] مباحث ويژه[/TD]
    [TD="class: body"] 3[/TD]
    [TD="class: body"] عملی[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 1013[/TD]
    [TD="class: body"] زبان تخصصی[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] نطری[/TD]
    [/TR]
    [/TABLE]

    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 5"] Selection Table[/TD]
    [/TR]
    [TR]
    [TD="class: header"] Student ID[/TD]
    [TD="class: header"] Course ID[/TD]
    [TD="class: header"] Term[/TD]
    [TD="class: header"] Year[/TD]
    [TD="class: header"] Grade[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 41252214[/TD]
    [TD="class: body"] 1011[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] 85 - 86[/TD]
    [TD="class: body"] 16[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10724113[/TD]
    [TD="class: body"] 1011[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] 85 - 86[/TD]
    [TD="class: body"] 14[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 41252214[/TD]
    [TD="class: body"] 1012[/TD]
    [TD="class: body"] 1[/TD]
    [TD="class: body"] 85 - 86[/TD]
    [TD="class: body"] 17[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10724113[/TD]
    [TD="class: body"] 1012[/TD]
    [TD="class: body"] 1[/TD]
    [TD="class: body"] 85 - 86[/TD]
    [TD="class: body"] 11[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10254861[/TD]
    [TD="class: body"] 1013[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] 85 - 86[/TD]
    [TD="class: body"] 13[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 10254861[/TD]
    [TD="class: body"] 1011[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] 84 - 85[/TD]
    [TD="class: body"] 8[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 27365187[/TD]
    [TD="class: body"] 1012[/TD]
    [TD="class: body"] 1[/TD]
    [TD="class: body"] 84 - 85[/TD]
    [TD="class: body"] 19[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 27365187[/TD]
    [TD="class: body"] 1013[/TD]
    [TD="class: body"] 1[/TD]
    [TD="class: body"] 84 - 85[/TD]
    [TD="class: body"] 16[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 35654415[/TD]
    [TD="class: body"] 1011[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] 84 - 85[/TD]
    [TD="class: body"] 9[/TD]
    [/TR]
    [TR]
    [TD="class: body"] 35654415[/TD]
    [TD="class: body"] 1013[/TD]
    [TD="class: body"] 2[/TD]
    [TD="class: body"] 84 - 85[/TD]
    [TD="class: body"] 17[/TD]
    [/TR]
    [/TABLE]
    مثال : از جدول Students , Selection مجموع نمرات و نام و نام خانواگی دانشجويانی که مجموع نمرات آنها بيش از 25 است را نمايش دهيد :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال [/TD]
    [/TR]
    [TR]
    [TD="class: body"] 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; [/TD]
    [TD="class: header"] کد [/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex, width: 600"]
    [TR]
    [TD="class: header"] Name [/TD]
    [TD="class: header"] Family [/TD]
    [TD="class: header"] مجموع نمرات [/TD]
    [/TR]
    [TR]
    [TD="class: body"] Sahar [/TD]
    [TD="class: body"] Ahmadi [/TD]
    [TD="class: body, align: center"] 35 [/TD]
    [/TR]
    [TR]
    [TD="class: body"] Ahmad [/TD]
    [TD="class: body"] Rezaee [/TD]
    [TD="class: body, align: center"] 33 [/TD]
    [/TR]
    [/TABLE]
    [/TD]
    [TD="class: header"] خروجی[/TD]
    [/TR]
    [/TABLE]
    مثال : از جدول Selection و Courses نام دروسی را ارائه دهيد که 4 بار توسط دانشجويان انتخاب شده باشد :
    [TABLE="class: ex"]
    [TR]
    [TD="class: header, colspan: 2"] مثال [/TD]
    [/TR]
    [TR]
    [TD="class: body"] 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 ; [/TD]
    [TD="class: header"] کد [/TD]
    [/TR]
    [TR]
    [TD="class: body"] [TABLE="class: ex, width: 400"]
    [TR]
    [TD="class: header"] CoTitle [/TD]
    [TD="class: header"] تعداد انتخاب [/TD]
    [/TR]
    [TR]
    [TD="class: body, align: center"] پايگاه داده[/TD]
    [TD="class: body, align: center"] 4[/TD]
    [/TR]
    [/TABLE]
    [/TD]
    [TD="class: header"] خروجی[/TD]
    [/TR]
    [/TABLE]

    [HR][/HR]