【发布时间】:2013-04-25 17:32:01
【问题描述】:
我创建了一个高尔夫记分卡网站。我正在处理的页面是玩家资料。当您访问球员资料时,它会按上次玩的顺序 (DESC) 显示每门课程。除了,由于下面的 ORDER BY 命令,最后播放的顺序是混乱的。相反,当它 GROUP 时,它会采用最早的日期,而不是最近的日期。
分组完成后,它会按顺序正确显示它们(DESC)...只是由于课程按 date_of_game ASC 而不是 DESC 分组而导致的顺序错误。希望这不会太令人困惑..谢谢。
$query_patrol321 = "SELECT t1.*,t2.* FROM games t1 LEFT JOIN scorecards t2 ON t1.game_id=t2.game_id WHERE t2.player_id='$player_id' GROUP BY t1.course_id ORDER BY t1.date_of_game DESC";
$result_patrol321 = mysql_query($query_patrol321) or die ("<br /><br />There's an error in the MySQL-query: ".mysql_error());
while ($row_patrol321 = mysql_fetch_array($result_patrol321)) {
$player_id_rank = $row_patrol321["player_id"];
$course_id = $row_patrol321["course_id"];
$game_id = $row_patrol321["game_id"];
$top_score = $row_patrol321["total_score"];
【问题讨论】:
-
我没有完全理解这个问题,但你能尝试将排序更改为
ORDER BY MAX(t1.date_of_game) DESC吗?如果您尝试显示每门课程的最后播放日期,这将起作用。 -
完美,谢谢。很高兴这是一个如此简单的修复。我想不通。
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解 prepared statements,并使用 PDO 或 MySQLi - this article 将帮助您决定哪个。