SQL แบ่งหน้าฐานข้อมูล Oracle Turn Back
2016-01-04 14:58:09
SQL query paging in Oracle
Select * from (
Select a.*,b.*, row_number() over (order by a.ID desc) as row_no from DB.TABLE1 a
LEFT JOIN DB.TABLE2 b on b.ID=a.bID order by a.ID desc
)
where row_no between 1 and 100 order by row_no
ใช้สำหรับการทำ paging จากฐานข้อมูล oracle โดยที่ 1 and 100 คือ คำสั่งแสดงข้อมูลตั้งแต่ row ที่ 1 ถึง 100
ซึ่งหากจะดูหน้าต่อไป ก็เปลี่ยนเป็น 101 and 200
ดังนั้น ก่อนทำการ query ข้อมูลเพื่อแบ่งหน้า ให้หา Total record ทั้งหมดก่อน
แล้วนำจำนวน Total มาหารด้วยจำนวน list/page ที่ต้องการให้แสดง
แล้วนำผลลัพธ์มาตัดเศษทิ้ง บวกด้วย +1 ก็จะได้จำนวนหน้าทั้งหมด สำหรับทำลิงคื ให้กดเปลี่ยนหน้า
ตัวอย่าง
มีข้อมูลอยู่ 950 record ต้องการแบ่งแสดงหน้าละ 100 record
950 / 100 = 9.5 ไม่เอาเศษ เหลือ 9 แล้ว +1
จะได้ทั้งหมด 10 page
Download CSS: pagination