ถามเรื่อง? การเรียงลำดับข้อมูล (SQL)

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ถามเรื่อง? การเรียงลำดับข้อมูล (SQL)

ถามเรื่อง? การเรียงลำดับข้อมูล (SQL)

ผมอยากทราบ คำสั่งในการเรียงลำดับน่ะครับ =>ผมต้องการเรียงลำดับจากวันที่
ตัวอย่างโค้ด

$sql = "SELECT tr.*,p.*, c.*, bg.*, lm.* ,y.*
            FROM training tr
            LEFT JOIN persons p ON tr.person_id = p.person_id
            LEFT JOIN tbl_learn_catagory c ON tr.cat_learn_id = c.cat_learn_id
            LEFT JOIN tbl_budget bg ON bg.budget_id = tr.budget_id
            LEFT JOIN tbl_learn_money lm ON lm.money_id = tr.money_id
            LEFT JOIN tbl_year y ON y.year_id = tr.year_id
            WHERE (tr.training_date_start >= '".$_GET["date_start"]."' ) AND (tr.training_date_start <= '".$_GET["date_end"]."')";
--------------------ผลลัพธ์ บางส่วน มันไม่เรียงลำดับ ------------------------
2014-10-02 - 2014-10-21
2014-10-26 - 2014-10-28
2014-10-05 - 2014-10-08



Hasanlebaesa02 30-10-2014 21:57:28

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
ปกติเรียงก็ใช้ ORDER BY xxxx DESC หรือ ASC ถ้าเรียงหลายฟิลด์ ก็ ORDER BY xxxx1 DESC,xxxx2 DESC

คำสั่ง SQL ORDER BY 
https://www.ninenik.com/content.php?arti_id=107 via @ninenik

แต่ถ้ามีการใช้ LEFT JOIN ก็อาจจะเรียงไม่ได้ถูกต้องสมบูรณ์ อันนีก็ขึ้นกับโครงสร้างของฐานข้อมูลด้วย
คงต้องปรับประยุกต์เอง ตามความเหมาะสม


ninenik 30-10-2014
 ความคิดเห็นที่ 2
ทำไมใช้คำสั่งนี้ ORDER BY tr.training_date_start ASC  ปรากฏว่า error


hasanlebaesa02 30-10-2014 22:17
 ความคิดเห็นที่ 3

ผมลองใช้ Between ครับ ก็ไม่ได้ครับ

$sql = "SELECT tr.*,p.*, c.*, bg.*, lm.* ,y.*
            FROM training tr
            LEFT JOIN persons p ON tr.person_id = p.person_id
            LEFT JOIN tbl_learn_catagory c ON tr.cat_learn_id = c.cat_learn_id
            LEFT JOIN tbl_budget bg ON bg.budget_id = tr.budget_id
            LEFT JOIN tbl_learn_money lm ON lm.money_id = tr.money_id
            LEFT JOIN tbl_year y ON y.year_id = tr.year_id
            WHERE (tr.training_date_start between '".$_GET["date_start"]."' ) AND '".$_GET["date_end"]."')
ORDER BY tr.training_date_start ASC";



hasanlebaesa02 30-10-2014 23:36
 ความคิดเห็นที่ 4
ไม่เคยได้ใช้ LEFT JOIN เยอะแบบนี้มาก่อน

ลองดูของเว็บนี้ดู เผื่อช่วยได้

http://stackoverflow.com/questions/14260860/multiple-left-joins-on-multiple-tables-in-one-query


ninenik 31-10-2014
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ