ورود

View Full Version : اول شرط where یا اول group by , having



ققنوس در ایران
جمعه 07 مرداد 1390, 17:27 عصر
سلام!


می خواستم بدونم که اگر توی یه کوئری هم عبارت where رو داشته باشیم هم Group by و Having اول کدوم یکی اعمال می شه؟؟
فرض کنیم که 4 تا جدول به صورت زیر داریم:

(S(s#, sname, status, city


P(p#, pname, city, weight, color



(J(j#, jname, city



(Spj(s#,p#, j#, qty


حالا سوال اینه که:
شماره پروژه هایی که تمام قطعات آنها را s1 تهیه کرده است بیابید.
جواب من اینه:


#Select j



From spj



(Where j# in (select j# from spj where s#=1



#Group by j



Having count(distinct s#)=1


مقادیر زیر رو برای spj وارد می کنیم :


;(Insert into spj values (1,1,1),(1,2,1),(2,2,1),(2,1,2),(2,2,2),(1,2,3),(2 ,3,3),(2,6,3),(3,2,4


اون وقت اگه اول گروه بندی و Having اعمال بشه بعد شرط جواب ما تهیِ و اگه اول شرط اعمال بشه بعد having , group اونوقت جواب 1و3 هستش.

AminSobati
جمعه 07 مرداد 1390, 23:50 عصر
سلام دوست عزیزم،
Where تقدم داره به group by و having. ابتدا رکوردها توسط where فیلتر میشن و بعد روی اونها aggregation اعمال میشه. از having برای فیلتر کردن رو توابع aggegation استفاده کنید

ققنوس در ایران
دوشنبه 10 مرداد 1390, 01:04 صبح
سلام دوست عزیزم،
Where تقدم داره به group by و having. ابتدا رکوردها توسط where فیلتر میشن و بعد روی اونها aggregation اعمال میشه. از having برای فیلتر کردن رو توابع aggegation استفاده کنید

ولی به نظر من اینجا اول گروه بندی می شه بعد شرط اعمال می شه، یه بار همین کویری رو با داده هایی که گذاشتم امتحان کن لطفا