ASP访问数据库-SQL连接查询

ASP访问数据库-SQL连接查询,sql,ms-access,asp-classic,Sql,Ms Access,Asp Classic,假设同一Access数据库中有两个表 Transaction - Date - Time - TransactionNumber - UniqueID - Exception (boolean) (TransactionNumber是当天记录的连续整数,然后每天从0开始重新开始。关键字字段为UniqueID) (ExceptionNumber是当天记录的连续整数,然后从0开始。TransactionNumber是两个表中日期相同的事务中的相同值) 如果Transaction.Exce

假设同一Access数据库中有两个表

Transaction
 - Date
 - Time
 - TransactionNumber
 - UniqueID
 - Exception (boolean)
(TransactionNumber是当天记录的连续整数,然后每天从0开始重新开始。关键字字段为UniqueID)

(ExceptionNumber是当天记录的连续整数,然后从0开始。TransactionNumber是两个表中日期相同的事务中的相同值)

如果Transaction.Exception为TRUE,则与该事务相关的记录也将出现在Exceptions中

我希望输出事务中的所有记录,以及记录中Transaction.Exception恰好为TRUE的位置,然后我希望有一列显示Exception.ExceptionReason。对于其他记录,它应为空


我不知道这怎么可能。如果您通过Date和TransactionNumber字段连接这两个表,您将只看到Transaction.Exception=TRUE的记录。

我觉得左连接可以实现您想要的功能

SELECT
    t.[Date],
    t.[Time],
    t.TransactionNumber,
    t.[Exception],
    e.ExceptionReason
FROM
    [Transaction] AS t
    LEFT JOIN Exceptions AS e
    ON
        t.[Date] = e.[Date]
        AND t.TransactionNumber = e.TransactionNumber

在我看来,
左连接可以实现您想要的

SELECT
    t.[Date],
    t.[Time],
    t.TransactionNumber,
    t.[Exception],
    e.ExceptionReason
FROM
    [Transaction] AS t
    LEFT JOIN Exceptions AS e
    ON
        t.[Date] = e.[Date]
        AND t.TransactionNumber = e.TransactionNumber

当然,只要在联接中加入
TransactionNumber
就足够了。@AnthonyWJones Ben说“TransactionNumber是当天记录的连续整数,然后每天从0开始”。谢谢!当我通过查询生成器重新执行时,它在Access中工作。“我还研究了如何让它只在exceptiontype不是43、44、45或46的情况下显示记录(通过在In列表后添加“or is not Null”条件。)当然,只要在联接中加入
TransactionNumber
就足够了。”AnthonyWJones-Ben说“TransactionNumber是当天记录的连续整数,然后每天从0开始”。谢谢!当我通过查询生成器重新执行此操作时,它在Access中起作用。我还研究了如何使其仅在exceptiontype不是43、44、45或46的情况下显示记录(通过在in列表后添加“or not Null”条件):由于异常与特定事务相关,因此最好将事务唯一ID放在异常表中,而不是将
transactionnumber
Date
放在异常表中。您可以将此字段指定为事务表的FK。对于日期+事务号的每个组合,异常只能有一行,如下所示:任何一个给定的事务都可以是异常,也可以不是异常。每个事务只能有一个异常。此外,我无法修改数据库设计。由于异常与特定事务相关,因此最好将唯一的事务放入异常表,而不是
transactionnumber
Date?您可以将此字段指定为事务表的FK。对于日期+事务编号的每个组合,异常只能有一行,因为任何给定事务都可以是异常,也可以不是异常。每个事务只能有一个异常。此外,我无法修改数据库设计。