PDA

View Full Version : به نظرتون میشه اینو تو یه کوئری بیرون کشید



sara_aryanfar
جمعه 28 آذر 1393, 23:46 عصر
فرض کنید یک جدول داریم با تعدادی رکورد که دارای یک فیلد عددی هستند که برای هر رکورد کم یا زیاد هست حالا ما می خواهیم بگیم که برای ما 30 تا رکورد رو انتخاب کن با این شرایط

15 رکورد اول اون فیلد مورد نظر رقمش بالای عدد 500 باشه
10 رکورد بعدی عدد فیلد بالای 300 باشه
5 رکورد هم از بین اونایی که عدد زیر 300 دارن انتخاب بشن

همه این انتخاب ها هم رندوم باشد

aminmousavi
یک شنبه 30 آذر 1393, 06:32 صبح
سلام دوست عزیز . بله میشه
برای اینکار به ابزار زیر نیاز داری :
1. top : که باهاش میتونی تعداد خاصی رکورد رو فقط برگردانی ، مثلا اگه میخوای 15 رکورد برگردونه مینویسی top 15
2. Order by NEWID : هر بار رکورد های رندوم رو برمیگردونه
حالا کافیه 3تا کوئری برای 3تا شرطت بنوسی :
شرط 1 select top 15 id from Table_1 WHERE num>=500 Order by NEWID()
شرط 2 select top 10 id from Table_1 WHERE num>=300 AND num<500 Order by NEWID()
شرط 3 select top 2 id from Table_1 WHERE num<300 Order by NEWID()

حالا کافیه با یک کوئری کلی هر 3تا کوئری رو جمع کنی که میشه کد زیر :


select * from Table_1 WHERE
id in (select top 15 id from Table_1 WHERE num>=500 Order by NEWID())
OR
id in (select top 10 id from Table_1 WHERE num>=300 AND num<500 Order by NEWID())
OR
id in (select top 2 id from Table_1 WHERE num<300 Order by NEWID())