ASP访问数据库-SQL连接查询
假设同一Access数据库中有两个表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
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。对于日期+事务编号的每个组合,异常只能有一行,因为任何给定事务都可以是异常,也可以不是异常。每个事务只能有一个异常。此外,我无法修改数据库设计。