access数据库SQL问题,请给出SQL语句
有两个access的MDB文件(f1.mdb f2.mdb),每个文件里都有一个表为ta,ta有两个字段为"名称","数量",现在要合并这两个MDB文件的数据到第三个文件(f3.mdb该文件已经有一个空的表ta),第三个文件数据结构和这两个MDB文件一致。合并时如果名称相同则数量相加,我不想一条记录一条记录的处理。我在网上看到在access不同数据库中的表进行链接(in)介绍,我想用链接(in)类似下面代码解决问题
insert into ta(名称,数量) select * from 文件f1的ta,in 文件f2的ta group by 名称
请问这个SQL怎么写?
问题点数:100、回复次数:14Top
1 楼trustmeok()回复于 2002-09-06 09:56:07 得分 0
老兄,在不同的库文件中能行吗?我知道假设在VB中用编程实现也得创建3个连接,一条语句行吗?
UPTop
2 楼yonghengdizhen(等季节一过,繁花就凋落)回复于 2002-09-06 09:57:05 得分 20
用union直接选取两表记录它会自动消除重复项的.
不要用union all就行了Top
3 楼yonghengdizhen(等季节一过,繁花就凋落)回复于 2002-09-06 09:59:53 得分 0
通过SQL SERVER的链接服务器操作Top
4 楼xc(xc)回复于 2002-09-06 10:05:01 得分 0
我现在是要对access的mdb文件操作。yonghengdizhen能否给出SQL语,再加100分Top
5 楼xuejinlong(-@判官@-)回复于 2002-09-06 10:28:51 得分 0
三个数据库,一句SQL肯定不行,但是还有办法的。
以Delphi5为例,你可以用BatchMove控件,实现你所说的功能很简单,首先以覆盖形势将表1倒入表3,然后以更新方式将表2倒入表3,OK.
如果程序要经常执行本操作,当然每次都是更新表3,那么你可以每个表都以更新的方式倒入表3即可。Top
6 楼xc(xc)回复于 2002-09-06 11:21:07 得分 0
我发现
insert into aa(name,count)
(SELECT [name], [count]
FROM [C:\My Documents\db1.mdb].aa
GROUP BY [name],[count]
union
SELECT [name], [count]
FROM [C:\My Documents\db2.mdb].aa
GROUP BY [name],[count])
在access下调试通不过,但是
insert into aa(name,count)
SELECT [name], [count]
FROM [C:\My Documents\db1.mdb].aa
GROUP BY [name],[count]
就可以,不过name相同的数据没有合并
Top
7 楼N_chow(Yukon)回复于 2002-09-06 11:37:07 得分 0
hi xc(xc) ,
根據你的提示,寫了下面這個語句,試試看。:)
SELECT a.名稱, Sum(NZ(a.數量)+NZ(b.數量)) AS Expr1
FROM [C:\db1.mdb].ta AS a LEFT JOIN [C:\db2.mdb].ta AS b ON a.名稱 = b.名稱
GROUP BY a.名稱;
Top
8 楼N_chow(Yukon)回复于 2002-09-06 11:50:11 得分 0
呃~!想想還是有錯誤。
Sorry,分兩步來做。
1)、建一個查詢,并命名為tmp
SELECT tmp.名稱, Sum(NZ(數量)) AS b數量
FROM [SELECT a.名稱,數量
FROM [C:\db1.mdb].ta AS a
union all
SELECT b.名稱,數量
FROM [C:\db2.mdb].ta AS b
]. AS tmp
GROUP BY tmp.名稱;
2)、新增資料:
INSERT INTO ta(名稱, 數量)
SELECT 名稱,b數量
FROM ab;
Top
9 楼xc(xc)回复于 2002-09-06 12:27:29 得分 0
N_chow能否把上面两个帖子再贴一遍,怎么少了很多字符Top
10 楼N_chow(Yukon)回复于 2002-09-06 12:29:11 得分 0
1)、建一個查詢,并命名為tmp
SELECT tmp.名稱, Sum(NZ(數量)) AS b數量
FROM [SELECT a.名稱,數量
FROM [C:\db1.mdb].ta AS a
union all
SELECT b.名稱,數量
FROM [C:\db2.mdb].ta AS b
]. AS tmp
GROUP BY tmp.名稱;
2)、新增資料:
INSERT INTO ta(名稱, 數量)
SELECT 名稱,b數量
FROM ab;
Top
11 楼xc(xc)回复于 2002-09-06 12:32:01 得分 0
我举个例子吧
现在是要把数据合并
例如
f1.mdb
name count
a 10
b 20
f2.mdb
name count
a 20
c 15
我希望f3.mdb结果
name count
a 30
b 20
c 15
Top
12 楼N_chow(Yukon)回复于 2002-09-06 12:37:44 得分 80
我上面的例子應該能ok.
我已經測試通過。Top
13 楼xc(xc)回复于 2002-09-06 15:57:20 得分 0
N_chow,我怎么总是不能全部显示你的贴子?少了很多字。你是用一个SQL解决的吗?Top
14 楼xc(xc)回复于 2002-09-06 16:01:07 得分 0
我知道答案了!
insert into aa(name,count)
select name,sum(count)
from(
SELECT name, count
FROM [C:\My Documents\db1.mdb].aa
UNION ALL SELECT [name], [count]
FROM [C:\My Documents\db2.mdb].aa)
group by nameTop




