0

我有以下语句可以找到当前赛季一支球队的所有球员。球员按他们的差点排序。如果他们的差点相同,则按最老的排序added_date,这意味着较新的成员在列表的下方。

SELECT players.playerid_p,
       players.fname, 
       players.sname, 
       players.tel, 
       players.mob, 
       players.email,
       season_players.captain 
FROM season_players 
     LEFT JOIN players ON (season_players.playerid_f = players.playerid_p)
     LEFT JOIN handicaps ON (handicaps.playerid_f = players.playerid_p)
WHERE season_players.seasonid_f = '$currentSeason'
      AND season_players.teamid_f = '".$row["teamid_p"]."'
GROUP BY players.playerid_p
ORDER BY handicaps.handicap ASC, handicaps.added_date ASC

对于每个玩家的任何评论,该handicaps表可以有多个条目。

我不知道如何制作用于订购的最新让分(可能与added_date上的MAX有关?)但同时如果两个或更多让分相同,它会按最旧的注册优先顺序排序在添加日期。

4

2 回答 2

0
SELECT x.*
  FROM my_table x
  JOIN 
     ( SELECT id,MAX(other_column) max_other_column FROM my_table GROUP BY id) y
    ON y.id = x.id
   AND y.max_other_column = x.other_column;
于 2013-01-30T00:39:16.453 回答
0

与其试图弄清楚如何在当前查询中满足您的需求,不如创建一个单独的表,比如说“Handicaps_latest”,它只存储 player_id 和所需的最新评论信息。这样做的原因是因为您只是试图获取(选择子句中的列)有关玩家的信息,而没有真正需要从让分表中获取。在这种情况下,每个玩家有多个条目的让分盘可能不适合加入。但考虑到其他逻辑可能需要这些数据,因此将它们留在那里并创建一个仅存储最新评论数据的分支新表可能是您的案例的一个选项。但这显然需要一些额外的工作,也就是说,每当您将新条目插入原始障碍表时,

于 2013-01-30T00:21:13.923 回答