ถามหน่อยนะค่ะ อยากดึงข้อมูลคะแนนล่าสุดในแต่ละบทเรียนของแต่ละคนออกมา จะทำยังไงค่ะ GROUP BY และเรียงข้อมูล โดยใช้ order by แต่ผลลัพธ์กลับได้ข้อมูลเก่าสุดของแต่ละบทเรียนของแต่ละคนออกมาแทนค่ะ ลองค้นในเน็ทแล้วยังทำไม่ได้เลยค่ะ
แต่พอเขียนโค้ด
select score.score_id,score.date,score.time,score.username,user.fname,user.lname,chapter.chapter,score.value,min(value) as min ,max(value) as max,avg(value) as avg ,year.year,term.term from score,chapter,user,term,year where score.username=user.username AND score.chapter_id=chapter.chapter_id and score.year_id=year.year_id and score.term_id=term.term_id GROUP BY score.username, chapter.chapter_id ORDER BY score.score_id DESC
โดย where term_id = (SELECT MAX(term_ID) from table_score WHERE user_id='xxxx')
Date :
2010-08-19 06:19:48
By :
webmaster
No. 3
Guest
ขอบคุณมากค่ะ
ได้แล้วค่ะ แต่ติดปัญหาและข้อคงใจนิดหน่อยค่ะ
หนูลองใช้ SUB SELECT ดูค่ะ(ตามที่พี่แนะนำ แต่ใช้ order by date desc ไม่ได้ค่ะมันจะเรียงจากวันที่มากมาน้อย)
แบบนี้
select score.score_id,score.date,score.time,score.username,user.fname,user.lname,chapter.chapter,score.value,min(value) as min ,max(value) as max,avg(value) as avg ,year.year,term.term
from score,chapter,user,term,year
where score.score_id = (SELECT MAX(score.score_id) from score where score.username=user.username AND score.chapter_id=chapter.chapter_id and score.year_id=year.year_id and score.term_id=term.term_id GROUP BY score.username, chapter.chapter_id) GROUP BY score.username, chapter.chapter_id