访问SQL查询:比较两个表以添加数据

时间:2015-12-10 10:53:38

标签: database ms-access compare

我曾尝试在Excel中使用vba执行此操作,但我已经放弃了,现在我正在尝试使用查询进行访问。

接下来的表1和表2只是一个样本,实际的表有超过26000行。

表1是从excel中的自动报告中获取的,然后导出为访问并用作模板。所有列都是自动的,除了在访问中手动添加的最后一个“附加费”。

每周都会在Excel中生成一个新报告(表2),其中包含新行和新价格(标记为橙色)并导出到访问权限,但我不想每周手动添加列搜索。

我需要做的是修改表2,以便只要公司,城市,产品和参考号在两个表中匹配,就可以从表1中查询列附加费。

enter image description here

通过这种方式,可以手动填充“附加费”列中有间隙的新行,然后将表2保存为模板,直到下一周新报告创建要与之比较的新表时。

感谢您的所有意见和支持

1 个答案:

答案 0 :(得分:0)

非常简单的动作查询集。但是您需要使用临时表(如表3)暂时保存新周数据,然后在处理后迁移到table1。以下选项使用TextView查询来匹配两个表:

选项1 :删除(上一个表3记录 - 确保第一次创建副本)/附加(到空表3)/删除(上一个表1记录)/追加(清空表1) - 将每个语句保存为单独的存储查询并按顺序运行它们,或者按顺序将它们编写为VBA字符串SQL语句。

INNER JOIN

选项2 :生成表查询(进入表3 - 允许它覆盖前一个)/删除(来自table1的先前记录)/追加(到空表1)

DELETE FROM table3;

INSERT INTO table3 (company, city, product, surcharge)
SELECT t2.company, t2.city, t2.product, t1.surcharge
FROM table2 t2
INNER JOIN table1
ON t1.company = t2.company 
AND t1.city = t2.city 
AND t1.product = t2.product

DELETE FROM table1;

INSERT INTO table1 (company, city, product, surcharge)
SELECT company, city, product, surcharge
FROM table3;