PDA

View Full Version : خواندن 10 رکوردقبل 100 رکورد آخری



intel_amd
پنج شنبه 26 تیر 1393, 03:39 صبح
سلام دوستان
توسط php my sql میتونم مثلا 20 رکورد آخرو انتخاب کنم اما 20 رکورد قبل 100 رکورد آخرو نمیتونم و برای صفحه بندی اطلاعات نیازش دارم
مثلا به این شکل که صفحه اول 20 رکورد آخرو بیاره و صفحه دوم 20 رکورد قبل 20 رکورد آخرو بیاره و صفحه سوم 20 رکورد قبل 40 رکورد آخرو بیاره و ...

thacker
پنج شنبه 26 تیر 1393, 05:14 صبح
فکر کنم باید از offset استفاده کنید ...

مثال :

SELECT * FROM table LIMIT 20 offset 100

vahidqara
پنج شنبه 26 تیر 1393, 09:38 صبح
سلام و درود ...



SELECT * FROM `posts` limit 20 offset 80


در مرحله ی اول مقدار 80 رو میزنی چون 100 تا رکورد داری و 20 تای آخر رو برمیگردونه در مرحله ی بعد مقدار offset رو 60 و بعد 40 و .... ولی مقدار limit ثابت است که همون 20 تا رو بخواین
برگردونید موفق باشید :لبخندساده:

هانیه دره باغی
پنج شنبه 26 تیر 1393, 09:56 صبح
سلام و درود ...



SELECT * FROM `posts` limit 20 offset 80


در مرحله ی اول مقدار 80 رو میزنی چون 100 تا رکورد داری و 20 تای آخر رو برمیگردونه در مرحله ی بعد مقدار offset رو 60 و بعد 40 و .... ولی مقدار limit ثابت است که همون 20 تا رو بخواین
برگردونید موفق باشید :لبخندساده:

اگر تعداد کل رکوردهای ما داخل دیتابیس مشخص نباشه اون وقت به جای 80 باید چی گذاشت؟

MMSHFE
پنج شنبه 26 تیر 1393, 10:22 صبح
میتونید این کار رو انجام بدین:
SELECT * FROM (SELECT * FROM `posts` ORDER BY `id` DESC LIMIT ???,20) AS `temp` ORDER BY `id`
و بجای ??? شماره صفحه موردنظر منهای 1 ضربدر سایز صفحه (20) رو بزنید. برای مثال، اگه میخواین صفحه 2 رو بیارین، اینجا باید 20 * (1 - 2) یعنی عدد 20 رو وارد کنید. برای صفحه سوم باید 40 وارد بشه و الی آخر
البته این کوئری برای اینکه که رکوردهای صفحه موردنظر به ترتیب ID و بصورت صعودی چاپ بشن و اگه میخواین نزولی باشه، کار شما راحتتره:
SELECT * FROM `posts` ORDER BY `id` DESC LIMIT ???,20

هانیه دره باغی
پنج شنبه 26 تیر 1393, 10:28 صبح
میتونید این کار رو انجام بدین:
SELECT * FROM (SELECT * FROM `posts` ORDER BY `id` DESC LIMIT ???,20) AS `temp` ORDER BY `id`
و بجای ??? شماره صفحه موردنظر منهای 1 ضربدر سایز صفحه (20) رو بزنید. برای مثال، اگه میخواین صفحه 2 رو بیارین، اینجا باید 20 * (1 - 2) یعنی عدد 20 رو وارد کنید. برای صفحه سوم باید 40 وارد بشه و الی آخر
البته این کوئری برای اینکه که رکوردهای صفحه موردنظر به ترتیب ID و بصورت صعودی چاپ بشن و اگه میخواین نزولی باشه، کار شما راحتتره:
SELECT * FROM `posts` ORDER BY `id` DESC LIMIT ???,20

temp نام چیه؟:خجالت:

MMSHFE
پنج شنبه 26 تیر 1393, 10:34 صبح
به دستور سلکت داخلی باید یک اسم مستعار بدین. هر چیزی دوست دارین میتونه باشه ولی بهرحال باید یک اسم بدین تا کوئری استاندارد باشه و بدون خطا کار کنه.

vahidqara
پنج شنبه 26 تیر 1393, 13:25 عصر
اگر تعداد کل رکوردهای ما داخل دیتابیس مشخص نباشه اون وقت به جای 80 باید چی گذاشت؟

مشخص نباشه؟؟

یه کوئری قبلش بزنید و مشخص می شود :لبخندساده:

abolfazl-z
پنج شنبه 26 تیر 1393, 16:17 عصر
از این روش هم میتتونید استفاده کنید:

SELECT * FROM `your_table` ORDER BY `id` DESC LIMIT 100,10