Sql遍历表

时间:2017-07-21 09:06:19

标签: sql ms-access

首先关闭,noob警报! :))

我需要构建一个在许多表上运行的查询。根据客户端代码,表格的名称仅在最后一位数字上有所不同。问题是,改变的值不是顺序的,所以循环如i = 1,2,3,......不起作用。一种可能的解决方案是将这些值放在另一个表的给定字段上。

这是前两个客户端015和061的代码。前导零必须是必不可少的。

SELECT LnMov2017015.CConta, RsMov2017015.DR, RsMov2017015.NInt, "015" AS CodCli
FROM LnMov2017015 INNER JOIN RsMov2017015 ON LnMov2017015.NReg = RsMov2017015.NReg
WHERE (((LnMov2017015.CConta)="6" And (LnMov2017015.CConta)="7") AND ((RsMov2017015.DR)=9999))

UNION SELECT LnMov2017061.CConta, RsMov2017061.DR, RsMov2017061.NInt, "061" AS CodCli
FROM LnMov2017061 INNER JOIN RsMov2017061 ON LnMov2017061.NReg = RsMov2017061.NReg
WHERE (((LnMov2017061.CConta)="6" And (LnMov2017061.CConta)="7") AND ((RsMov2017061.DR)=9999))

...

因此,对于第一个SELECT表名称 LnMov2017015 ,结尾 015 是值,即客户端代码,从表格更改为表格,例如在第二个SELECT中,表名是LnMov2017061( 061 ),是表格的区别。

对于每个客户端代码,有两个表,例如 LnMov2017015 RsMov2017015 LnMov2017061 RsMov2017061 为第二套客户端示)。

基于上面的示例SQL,有没有办法构建SQL?

有没有人有解决方案的想法? :)

2 个答案:

答案 0 :(得分:0)

显然,可以构建一个查询对象来读取另一个数据库中的数据,而无需建立表链接。刚测试过,令我惊讶的是它有效。例如:

SELECT * FROM [SoilsAgg] IN "C:\Users\Owner\June\DOT\Lab\Editing\ConstructionData.accdb";

我已在VBA中使用此结构来执行DELETE和UPDATE操作语句。

答案 1 :(得分:0)

发现解决方案:)

感谢大家的投入。

我将使用SLQ

访问它们,而不是链接100个表(受密码保护)
FROM Table2 IN '' ';database=C:\db\db2.mdb;PWD=mypwd'

在所有其他事情之前将它们全部与查询合并!