คำสั่งที่ใช้สำหรับดึงข้อมูลออกจากฐานข้อมูล พร้อมทั้งจัดเรียงมันออกมาด้วยนั้น เขาใช้คำสั่ง order by
ข้อมูลที่ถูกจัดเรียงนั้น สามารถกำหนดให้เรียงมากไปหาน้อย หรือน้อยไปหามากก็ได้ ถ้าเป็นตัวอักษรน้อยไปหามาก มันก็จะเรียงจาก a-z ถ้าเป็นตัวเลข ก็จะเรียงจาก 0 ขึ้นไปเรื่อยๆ
ทีนี้มันมีปัญหาอยู่ว่า ถ้าเราต้องการ ให้ bangkok มันขึ้นก่อน แล้วค่อยเป็น Sandnes แล้วจึงเป็น Indo
City |
---|
Sandnes |
Bangkok |
Indo |
ความต้องการอย่างนี้เราต้องใช้ฟังก์ชั่นเข้าช่วย แปลงคำให้เป็นตัวเลข แล้วค่อยจัดเรียง
SELECT * FROM tbl_city ORDER BY ( CASE city_name WHEN "Bangkok" THEN 1 WHEN "Sandnes" THEN 2 ELSE 3 END ) ASC |
เราใช้ CASE เข้าช่วย ถ้า ฟิลด์ city_name มีค่า Bangkok ให้แปลงค่าเป็น 1 ถ้า Sandnes ก็ให้เป็น 2 ถ้านอกเหนือจากนั้นก็ให้เป็น 3 พอจัดเรียงมันก็ Bangkok จะมาก่อน
นี่ละครับเทคนิคการ order by แบบ advance
krunot says:
26/01/2553 at 26/01/2553
โห แจ่มเลยพี่ปลา ขอบคุณมากครับพี่ที่หาแต่สิ่งดีดีมาฝาก
นิวส์โฟลเดอร์ says:
13/02/2553 at 13/02/2553
พี่ปลาทู นี่ผมนับเป็นครูคนนึง ของผมเลยทีเดียวครับ เยี่ยมไปเลยครับพี่ปลาทู