MySQL-组合来自多个事务的问题和答案

MySQL-组合来自多个事务的问题和答案,sql,mysql,Sql,Mysql,我在数据库中有以下表格,用于存储调查结果: 每次我在商店(read Shop)与某人交谈时,我都会创建一个带有日期/时间(tblTransaction.Created)的新事务。每个事务都可以有许多与之相关的问题答案 我的问题是,两个事务可能都包含同一问题的不同答案,我正在尝试创建一个SQL查询/过程,以仅返回给定存储区的最新问题答案 下面是一个例子: 我在某家商店和某人交谈。并在01/01/09(事务ID 1)上创建一个事务。在这个事务中,我询问问题1和2。然后在2009年1月10日,我再次

我在数据库中有以下表格,用于存储调查结果:

每次我在商店(read Shop)与某人交谈时,我都会创建一个带有日期/时间(tblTransaction.Created)的新事务。每个事务都可以有许多与之相关的问题答案

我的问题是,两个事务可能都包含同一问题的不同答案,我正在尝试创建一个SQL查询/过程,以仅返回给定存储区的最新问题答案

下面是一个例子:

我在某家商店和某人交谈。并在01/01/09(事务ID 1)上创建一个事务。在这个事务中,我询问问题1和2。然后在2009年1月10日,我再次与他们交谈,创建一个新的事务(事务ID 2),并回答问题2和3

我希望能够显示最新答案的列表;第一笔交易的问题1和第二笔交易的问题2和3

SELECT
     S.StoreID,
     S.BranchName,
     A.QuestionID,
     T.Created,
     A.*
FROM
     tblStore S
INNER JOIN tblTransaction T ON
     T.StoreID = S.StoreID
INNER JOIN tblAnswer A ON
     A.TransactionID = T.TransactionID AND
     A.StoreID = S.StoreID
WHERE NOT EXISTS
          (
          SELECT
               T2.StoreID,
               A2.QuestionID,
               T2.TransactionID,
               T2.CreatedDate
          FROM
               tblTransaction T2
          INNER JOIN tblAnswer A2 ON
               A2.TransactionID = T2.TransactionID AND
               A2.StoreID = T2.StoreID
          WHERE
               T2.StoreID = T.StoreID AND
               A2.QuestionID = A.QuestionID AND
               T2.CreatedDate > T.CreatedDate
          )
也可以通过在WHERE子句中使用相同的条件左外连接子查询并在其中查找空值来完成此操作,或者可以在CreatedDate上使用MAX()从子查询中删除TransactionID,并以这种方式查找与内部连接的匹配

请记住,如果同一个商店的多个交易具有相同的创建日期,则这可能不符合您的预期。您可能需要根据您在该情况下的业务规则在此处添加其他标准