PDA

View Full Version : استخراج رکوردهای 10 تا 20 از جدول



f_naderi
یک شنبه 12 دی 1395, 21:49 عصر
سلام دوستان
من می خوام از یک جدول مثلا بگم از رکورد 10 تا 20 را نمایش دهد ممنون میشم برای نوشتن این query کمکم بفرمایید

saeed1234n
دوشنبه 13 دی 1395, 14:13 عصر
با سلام

در ابتدا بايد مشخص شود كه مبناي اين انتخاب بر چه اساسي مي باشد

اگر صرفا رديف 10 الي 20 جدول باشد كه اين منطق صحيح نمي باشد

بهتر آن است كه نمونه خود را قرار دهيد و بيشتر توضيح دهيد

كه معيار در انتخاب 10 ركورد مورد نظر جنابعالي چيست ؟

با تشكر نادري .

f_naderi
دوشنبه 13 دی 1395, 16:50 عصر
ممنون از توجهتون. من می خوام توی برنامم به این صورت باشه که کاربر انتخاب میکنه که 10 سوال اول ذخیره شده رو ببینه حالا می خواد مثلا از سوال 10 الی 20 رو ببینه و مثلا بار سوم 10 سوال بعدی رو ببینه. برای 10 سوال اول میتونم از دستور top استفاده کنم ولی برای بقیش نمیدونم برای اینکار در اسکیول از limit استفاده میکردم ولی در access این دستور وجود نداره.
با تشکر فراوان

mazoolagh
یک شنبه 19 دی 1395, 07:39 صبح
در اکسس limit و بطور کلی data pagination نداریم
SELECT ORDERID FROM ORDERS WHERE ORDERID IN
(SELECT TOP 10 ORDERID FROM
(SELECT TOP 20 ORDERID FROM ORDERS ORDER BY ORDERID)
ORDER BY ORDERID DESC)
ORDER BY ORDERID

f_naderi
یک شنبه 19 دی 1395, 19:27 عصر
ممنون بابت پاسختون.
من از دو تا تکست باکس دریافت میکنم که کاربر چه رکورد هایی رو می خواد ببینه مثلا رکورد 1 تا 10 یا رکورد 10 تا 20 و .... حالا من تکست 1 رو قرار دادم به جای عدد 10 و تکست 2 رو به جای عدد 20 قرار دادم ولی وقتی مقدار ورودی تکست 1 عدد 1 و ورودی تکست 2 رو 10 قرار میدم فقط یک رکورد به من نمایش میده.

saeed1234n
یک شنبه 19 دی 1395, 20:48 عصر
سلام

یک راه خیلی ساده استفاده از گزاره اسی کیو ال مانند زیر است :


SELECT [ID], field1.field2FROM Sheet1
WHERE ((([ID]) Between [عدد اول] And [عدد دوم]));





اگر متوجه شدید که هیچ در غیر اینصورت نمونه خود را ارسال کنید .

با تشکر نادری

the_best_chanals@

f_naderi
یک شنبه 19 دی 1395, 21:15 عصر
Class1.str1 = "select Num_Question,QTs_Name,Correct_Ans from Lesson,Quastion where Lesson.L_Code=Quastion.L_Code and Type_Q='" + type_q + "' and Base_N='" + base_n + "' and Branch='" + branch + "' and Lesson.L_Code=" + l_code + " and Chapter_C=" + chapter + " and [Section_C]=" + section;

این دستور select رو استفاده کردم.
و دستور رو با توجه به فرمایش دوستمون به این صورت تغییر دادم ولی فقط یک سطر رو نمایش داد (وقتی تکست اول 1 باشه)

Class1.str1 = "select Num_Question,QTs_Name,Correct_Ans from Quastion where Num_Question IN (select top " + Convert.ToInt32(textBox1.Text.Trim()) + " Num_Question from (select top " + Convert.ToInt32(textBox2.Text.Trim()) + " Num_Question from Lesson,Quastion where Lesson.L_Code=Quastion.L_Code and Type_Q='" + type_q + "' and Base_N='" + base_n + "' and Branch='" + branch + "' and Lesson.L_Code=" + l_code + " and Chapter_C=" + chapter + " and [Section_C]=" + section + " order by Num_Question) order by Num_Question desc) order by Num_Question";

دستوری که شما فرمودید رو هنوز اجرا نکردم ولی فکر کنم که فیلد ای دی رو چک کنه و اگر مقدار این فیلد برابر مثلا 1 تا 10 بود در اینصورت رکورد رو نمایش میده در صورتی که من می خوام بین مثلا 300000 رکورد کاربر بگه چند تا رو می خواد ببینه
ممنون

saeed1234n
یک شنبه 19 دی 1395, 21:20 عصر
سلام

این کار رو هم می تونه بکنه

f_naderi
یک شنبه 19 دی 1395, 21:56 عصر
سلام ممنون از توجهتون.
از دستور between هم استفاده کردم ولی متاسفانه جواب نگرفتم

saeed1234n
یک شنبه 19 دی 1395, 22:35 عصر
نمونه فایلتون رو بزارید

f_naderi
یک شنبه 19 دی 1395, 23:21 عصر
ممنون .خداروشکر جواب گرفتم.
البته شاید زیاد راه جالبی نباشه ولی با دستور not in . به این صورت که داخل select اول نوشتم به تعداد تکست دوم رکورد استخراج کنه و در دستور دوم نوشتم به تعداد تکست اول رکورد استخراج کنه و با دستور not in چک بشه که رکوردهای select اول داخل select دوم نباشند

mazoolagh
دوشنبه 20 دی 1395, 06:46 صبح
ممنون بابت پاسختون.
من از دو تا تکست باکس دریافت میکنم که کاربر چه رکورد هایی رو می خواد ببینه مثلا رکورد 1 تا 10 یا رکورد 10 تا 20 و .... حالا من تکست 1 رو قرار دادم به جای عدد 10 و تکست 2 رو به جای عدد 20 قرار دادم ولی وقتی مقدار ورودی تکست 1 عدد 1 و ورودی تکست 2 رو 10 قرار میدم فقط یک رکورد به من نمایش میده.

باید محدوده رو حساب کنین: وقتی گفته میشه رکورد 51 تا 60 یعنی 10 رکورد آخر از 60 رکورد انتخاب شده.
فایل پیوست رو ببینید

mazoolagh
دوشنبه 20 دی 1395, 06:52 صبح
سلام

یک راه خیلی ساده استفاده از گزاره اسی کیو ال مانند زیر است :


SELECT [ID], field1.field2FROM Sheet1
WHERE ((([ID]) Between [عدد اول] And [عدد دوم]));





اگر متوجه شدید که هیچ در غیر اینصورت نمونه خود را ارسال کنید .

با تشکر نادری

the_best_chanals@


فقط زمانی درست هست که:
1- فیلد ID حتما از 1 شروع شده باشه وگرنه باید آفست اون رو منظور کنیم.
2- هیچ رکورد حذفی نداشته باشیم که در عمل داریم.
3- کلید الزاما autonumber نیست.