gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:43:15 25 4
gpt4 key购买 nike

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

alt text

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

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

这是一个例子:

我与 Some Shop Plc 的某人交谈。并在 01/01/09(事务 ID 1)上创建一个事务。在此交易中,我询问问题 ID 1 和 2。然后在 2009 年 10 月 1 日我再次与他们交谈,创建一个新交易(交易 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 子句中相同的条件下左外连接子查询并在其中查找 NULL 值来执行此操作,或者您可以使用 CreatedDate 上的 MAX() 从子查询中删除 TransactionID 并查看以这种方式与 INNER JOIN 进行匹配。

请记住,如果您对具有相同创建日期的同一商店进行了多次交易,这可能不会按照您的预期进行。您可能需要根据围绕该情况的业务规则在此处添加其他条件。

关于sql - MySQL - 结合来自多个事务的问题和答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/696669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com