0

我有一个与 MAS200 数据库异步工作的 Access 2007 数据库。由于各种办公室政治和繁文缛节,我无法访问 MAS200 数据,尽管 ODBC 使这很容易,并且必须将数据转储从 MAS200 导入 Access。由于这一点以及报告的运行方式,我偶尔会在转储中出现重复数据。

我的解决方案是有一个 DATA 表和一个 DUMP 表。现在我需要找到正确的查询来检查在导入之前是否存在来自 DUMP 的行。

这两个表看起来像这样,加上一些在 dupe 和 dump 逻辑完成后手动填写的字段:

DATA ID / DUMP ID
InvoiceDate
InvoiceNumber
CompanyID
Product
Description
SalespersonID
Quantity
Cost
Price

我的假设是我可以使用以下查询,但它似乎不起作用。

INSERT INTO tblDATA(InvoiceDate, InvoiceNumber, CompanyID, Product, Description, SalespersonID, Quantity, Cost, Price)
SELECT tblDUMP(InvoiceDate, InvoiceNumber, CompanyID, Product, Description, SalespersonID, Quantity, Cost, Price)
WHERE tblDATA.InvoiceNumber != tblDUMP.InvoiceNumber AND tblDATA.Product != tblDUMP.Product AND tblDATA.Quantity != tblDUMP.Quantity

你能修复我的代码或告诉我更好的路径吗?


编辑!

自从我第一次发布这个问题以来,我的数据库发生了轻微的变化。我正在寻找更正的查询现在是:

INSERT INTO tblSold(InvoiceDate, Invoice, CompanyID, Product, Description, Salesperson, Quantity, Cost, Price)
SELECT tblNewData.InvoiceDate, tblNewData.Invoice, tblNewData.CompanyID, tblNewData.Product, tblNewData.Description, tblNewData.Salesperson, tblNewData.Quantity, tblNewData.Cost, tblNewData.Price
FROM tblNewData FULL OUTER JOIN tblSold ON tblSold.InvoiceNumber = tblNewData.InvoiceNumber AND tblSold.Product = tblNewData.Product AND tblSold.Quantity = tblNewData.Quantity
WHERE tblSold.InvoiceNumber IS NULL AND tblSold.Product IS NULL AND tblSold.Quantity IS NULL
4

2 回答 2

0

一位朋友给我写了一个很棒的答案,这让我很头疼。

INSERT INTO tblDATA (InvoiceDate, InvoiceNumber, CompanyID, Product, Description, SalespersonID, Quantity, Cost, Price)
SELECT tblDUMP.InvoiceDate, tblDUMP.InvoiceNumber, tblDUMP.CompanyID, tblDUMP.Product, tblDUMP.Description, tblDUMP.SalespersonID, tblDUMP.Quantity, tblDUMP.Cost, tblDUMP.Price
FROM tblDUMP FULL OUTER JOIN tblDATA ON tblDUMP.InvoiceNumber = tblDATA.InvoiceNumber AND tblDUMP.Product = tblDATA.Product AND tblDUMP.Quantity = tblDATA.Quantity
WHERE tblDATA.InvoiceNumber IS NULL AND tblDATA.Product IS NULL AND tblDATA.Quantity IS NULL

注意语法在 Access 中并不完美。

我发现一些很棒的研究让我理解了他的推理: 左、右、外连接和内连接有什么区别? https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

现在我需要有关 Access 2007 语法的帮助。

于 2009-07-08T16:40:56.600 回答
0

Access 不支持 FULL OUTER JOIN。我必须使用左连接和联合,如下所述:http: //bytes.com/topic/access/answers/642644-excel-vlookup-full-outer-join

于 2009-07-08T19:22:55.087 回答