我有1个表和1个通过玩家ID加入的查询。我想只显示tblPlayerLogistics和玩家姓名中的身高和体重列的最新测试日期结果以及来自qryPlayersExtended的玩家ID
PlayerID位于表和查询中,并且它们已连接。 我在tblplayerlogistics中有playerID,height,weight和testdate 我在qryPlayersExtended中有PlayerID,玩家名称
我想要一个只返回一个玩家记录的查询,该记录标记了玩家ID和玩家名称,其中每个玩家的最高身高和体重由testdate确定。
查询名称:qryPlayersExtended 表名:tblPlayerLogistics
我已经附上了我想要在图像中做的事情。这是一个玩家的例子,但我会有多个玩家有多个考试日期
我几周来一直在努力争取任何帮助。我看了上一篇文章,但仍然无法弄明白 similar post
答案 0 :(得分:0)
假设任何一个日期的玩家测试不超过一次。警告,航空代码。创建新查询qryLastTestDate:
SELECT PlayerID, Max(TestDate) as LastTestDate FROM tblplayerlogistics Group By PlayerID
创建第二个查询qryLastTest:
SELECT tblplayerlogistics.PlayerID, tblplayerlogistics.TestDate, tblplayerlogistics.height, tblplayerlogistics.weight FROM tblplayerlogistics INNER JOIN qryLastTestDate ON tblplayerlogistics.PlayerID = qryLastTestDate.PlayerID and tblplayerlogistics.TestDate = qryLastTestDate.LastTestDate
您的最终查询将是:
SELECT qryPlayersExtended.PlayerID, qryPlayersExtended.[Player Name], qryLastTest.TestDate, qryLastTest.Height, qryLastTest.Weight FROM qryPlayersExtended INNER JOIN qryLastTest ON qryPlayersExtended.PlayerID = qryLastTest.PlayerID;
根据需要添加其他字段。
答案 1 :(得分:0)
您需要两个查询。
首先,您需要一个获取每位玩家最新日期的查询。它将有两列:PlayerId和Max(TestDate),由PlayerId分组。我已将此qryMaxPlayerTestDates命名为。它看起来像这样:
SELECT PlayerId, Max(TestDate) AS MaxDate
FROM tblPlayerLogistics
GROUP BY PlayerId;
第二次,您加入PlayerId和Dates(MaxDate / TestDate)以获得Max(TestDate)限制的结果。它看起来像这样:
SELECT tblPlayerLogistics.PlayerId, tblPlayerLogistics.Height,
tblPlayerLogistics.Weight, tblPlayerLogistics.TestDate,
qryPlayersExtended.PlayerName
FROM qryPlayersExtended INNER JOIN (qryMaxPlayerTestDates
INNER JOIN tblPlayerLogistics
ON (qryMaxPlayerTestDates.MaxDate = tblPlayerLogistics.TestDate)
AND (qryMaxPlayerTestDates.PlayerId = tblPlayerLogistics.PlayerId))
ON qryPlayersExtended.PlayerId = qryMaxPlayerTestDates.PlayerId;
如果您的日期不是每个玩家重复(没有玩家每个日期有多个测试,或者同一日期的两个测试有不同的时间),您将在结果中获得每个玩家一行的高度/重量最新的考试日期。