View Full Version : سوال: سوالي در مورد Paging
antisocial
یک شنبه 03 خرداد 1388, 14:15 عصر
سلام
فرض كنيد ما تعداد خيلي زيادي ركورد توي يك جدول داريم.
حالا من در يك جا يك همچين دستوري رو اجرا ميكنم(دكمه ي رفتن به صفحه ي قبل)
select * from t_log where log_id <=329897 order by log_id asc
من ميخوام بدونم خروجي كه ميگيرم ازاول جدول مياد يا درست ركوردايي رو مياره كه قبل ازاين شماره ثبت شدن؟
(يعني از وسط جدول)
اگر پيجينگ ما رفتن به آخر و اول رو احتياج داشته باشه به اين دستور احتياج پيدا ميكنيم.
ممنون ميشم دوستان راهنمايي كنند
pesar irooni
یک شنبه 03 خرداد 1388, 16:32 عصر
سوالتون یه کم نامفهومه،
ولی فرقی نمیکنه. شما هر select که میزنی کل رکوردهای جدول مورد بررسی قرار میگیرند (مگر اینکه از (Top(x استفاده کنی) و تنها این شرطی که جلوی where اومده تعیین میکنه کدوم رکوردها بازیابی بشند. یعنی با این کوئری هر رکوردی که تا حالا ثبت شده باشه و id اون کمتر از این عددی که نوشته باشی رو برات میاره.
mpmsoft
یک شنبه 03 خرداد 1388, 21:53 عصر
در مرحله اول رکوردهایی رو میاره که کمتر یا مساوی 329897 باشه
و سپس نتیجه رو سورت می کنه
antisocial
سه شنبه 05 خرداد 1388, 15:20 عصر
من فکر میکنم یه اشتباهی کردم من فرمانم توی اوراکل اینه. که البته برای اینکه این تالار شلوغ تره اینجا مطرحش کردم و اینکه دستورات DML باهم فرق چندانی توی بانکها نمیکنن.
دستور رفتن به صفحه ی قبل :
select * from t_log where log_id<=320987 and rownum<=100 order by log_id asc
rownum تعداد سطرهارو توی هر خروجی مشخص میکنه.
فرض کنید من آخرجدولم . با یه همچین فرمانی
دستور رفتن به آخر جدول :
select * from t_log where log_id<= (select max(log_id) from t_log) and rownum<=100 order by log_id asc
حالا من فرمان اول رو اجرا میکنم.
میخوام بدونم رکورد اول جدول نشون داده میشه؟یا نه؟یعنی سورت از اول جدول صورت میگیره یا از شماره ی320987 به ترتیب کم میشه و میرسه به 320887 ؟
امیدوارم قابل فهم باشه نمیدونم چه طور توضیح بدم:گریه:
با تشکر
mohammad_tz
چهارشنبه 06 خرداد 1388, 13:09 عصر
:لبخند:
متشکرم.
antisocial
جمعه 08 خرداد 1388, 03:57 صبح
:لبخند:
متشکرم.
خواهش میکنم اما شما برای چی از من متشکرین............!!!!!!!!!!!؟؟؟؟؟؟ :لبخند::متفکر:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.