我有一个包含3个表的数据库。获取最新测试结果
第一个表中包含学生的领域FLDID,fldName,fldPIN等
第二个表包含的问题,学生必须与领域studentID和questionID
第三个表包含一行接听清单每次学生回答一个问题并且具有学生ID,问题ID,回答和分数的字段。每个问题可能有多个答案。
我想要一个查询,通过它可以获取学生姓名(通过他们的PIN)以及他们需要回答的问题列表以及每个问题的最近分数。未回答的问题将得分为零。
我不确定如何为此进行连接。
非常感谢您的帮助。
戴夫
因为我已经想出这个SQL。你可以看看,让我知道这是否有效或非常糟糕!我很努力地理解你的帖子,所以努力想出这个。
SELECT
`tbldelegate`.`fldFirstName`,
`tbldelegate`.`fldSurname`,
`tbldelegatequestions`.`fldQuestionID`,
`latestScores`.`fldScore`
FROM
`tbldelegate`
Left Join `tbldelegatequestions` ON `tbldelegatequestions`.`fldDelegateID` = `tbldelegate`.`fldID`
Left Join (SELECT *
FROM
(SELECT max(fldID) as maxID
FROM tblscoredata
GROUP BY
`tblscoredata`.`fldDelegateID`,
`tblscoredata`.`fldSection`,
`tblscoredata`.`fldQuestion`
) AS x INNER JOIN `tblscoredata` AS f ON f.fldID = x.maxID) AS `latestScores` ON `latestScores`.`fldQuestion` = `tbldelegatequestions`.`fldQuestionID`
WHERE
`tbldelegate`.`fldPIN` = '11'
您如何识别哪个响应最后?第三个表中是否有时间戳? – 2011-04-19 12:17:22
是的,第三个表中有一个时间戳和一个自动增量id列 – Dave 2011-04-19 15:08:34