我有一个与 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