สวัสดีครับวันนี้ เอกคอม เอาเคล็ดลับเล็กๆน้อยๆมาฝากพี่น้องซึ่งเชื่อว่า ปัญหาการ Query ข้อมูลนั้นเป็นปัญหาสำหรับพี่น้องกันอย่างแน่นอน ซึ่งด้วยความที่ต้องการข้อมูลที่มัน ซับซ้อนขึ้น

จากภาพด้านบนนะครับจะเห็นได้ว่าผมมี Table นึงซึ่งเก็บค่า lib_main_doccode เอาไว้ ซึ่งผมต้องการ query เอาค่า lib_main_doccode ค่าล่าสุดมาเท่านั้น แต่ถ้า Group by ธรรมดา มันจะไม่ได้ค่าล่าสุดมาอย่างแน่นอนครับ

ดังนั้นปัญหานี้จึงแก้ด้วยการใช้ Sub query เข้ามาช่วยแก้ปัญหาของเรานั่นเอง เอาละไปดูกันเลยครับ

ในภาพนั้นผมได้ทำการ

select * from (select max(lib_main_id) as lib_main_id_max from library_main group by lib_main_doccode)a

ซึ่งหมายความว่า select ค่าทั้งหมดจากตาราง library_main โดย เอาค่าที่มากที่สุดของ ฟิล lib_main_id และสั่ง group by lib_main_doccode เพื่อเอาค่าไอดีที่มากที่สุดมาค่าเดียวทำเป็น temp table ชื่อว่า a 

ก็จะได้ค่าอย่างที่เห็นในภาพครับ เป็นค่าไอดีล่าสุดของ lib_main_doccode ที่เราต้องการมาละทีนี้ เพื่อนๆมันยังไม่มาครับ

เราก็จัดการใส่ Code เพิ่มเข้าไปดังภาพ 

inner join (select * from library_main)b on a.lib_main_id_max = b.lib_main_id

ซึ่งหมายความว่า เราจะทำการ ดึงข้อมูลทั้งหมดออกมาโดยยึดจากตางราง a ที่ค่าล่าสุดมานั่นเองก้จะได้ผลลัพธ์ดังภาพ ครับก็เป็นอันเสร็จสิ้นพิธีการ