SELECT *,date_format(topic_date,'%d/%m/%Y %H:%i:%s') as postdate,date_format(topic_date,'%d,%m,%Y') as datecal, topic.topic_id as index_key, topic.member_id as mem_id, topic.aId as adm_id
FROM topic
LEFT JOIN reply ON topic.topic_id=reply.topic_id
WHERE topic_type=1
GROUP BY topic.topic_id
ORDER BY topic_pin DESC, coalesce(MAX(reply_date), topic_date) DESC LIMIT 0,50
ปรากฏว่า เรียงลำดับได้ถูกต้อง
แต่...เว็บโหลดข้อมูลช้ามากครับ ประมาณ 7-10 วิเลยทีเดียว คาดว่าน่าจะเป็นปัญหาที่ Left Join ที่ทำให้ช้า เพราะผมลองเปลี่ยน Left Join เป็น Inner Join ดู ปรากฎว่าเร็วขึ้น แต่แสดงผลไม่ถูกต้อง เพราะบางกระทู้ที่ยังไม่มีคนตอบก็จะไม่แสดง
select ฟีลด์ที่จำเป็น from topic
order by pin desc, last_post desc
limit 50
คำสั่ง update topic.last_post
ีCode (SQL)
update topic
left join (
select max(reply_date) mx , topic_id from reply group by topic_id
) as t on t.topic_id=topic.id
set topic.last_post = coalesce( t.mx, topic.topic_date)
TABLE test
id+++++ name ++++++mydate
1---------AAA-------2010-01-25
2---------BBB-------2011-01-25
3---------AAA-------2012-01-25
4---------BBB-------2013-01-25
5---------AAA-------2014-01-25