Westboy2000大哥!!
因为我这个数据表要同时判断ID和NAME都不在表里才能区分唯一的数据!
我可不可以改成这样:
insert into Goods (ID,Name,Store,StoreTun)
SELECT ID,Name,SUM(Buy-Supply),SUM(Supply-GetTun)
FROM Supply
where ((ID not in (select ID from Goods) and (NameE not in (select Name from Goods))
group by ID,Name;
本来加where条件的目的是为了查出Goods表中已经存在的记录,则新增的记录不能是那些记录,
如果已经存在 id=1,name='张三' 的数据,最好是能将两个连接起来查询,这样才能唯一,
如果只用一个id,那么象这样的数据 id=1,name='李四' 也不能写进去了,这样,插入的数据就会减少,
同样,只用name作条件也不行,而且可以很容易想到,用你写的 id and name 的方法,
比用一个字段作条件插入的数据量会更加减少,所以,这样是不行的,会导致插入数据数目的不正确。
更好的方法我暂时还没有,你再想想吧。
明白了,你上面说的Goods表和Supply表的ID,Name字段指的是客户编号和品名,是吧?
以后不要叫什么大哥不大哥的了,我可不敢当,还是朋友相称吧。
看了你的表,其实C表是根据D表的数据统计生成的,是不是?其实,C表完全可以做成一个视图的。
视图中的数据在每次调用时动态生成,平时没有,它的调用方法跟表的调用方法完全一样。
上面的C表如果做成视图,那就不存在什么Insert和Update的判断问题了,只需要用Select就可以解决问题。
在Access2000中,视图的创建方法如下:
1、在设计界面中,选中左边的“查询”一项,然后双击“在设计视图中新建查询”,
会弹出一个标题为“显示表”的界面,直接关闭,不作操作。然后在下一个“选择查询”的界面中
单击右键,选择“SQL视图”,在里面写上下面的SQL,保存退出。
SELECT ID,Name,SUM(Buy-Supply) as Store,SUM(Supply-GetTun) as StoreTun FROM Supply group by ID,Name;
2、假设你将刚才的视图命名为s1,则调用时可以这样写:
select * from s1;
用法与一般的表完全一样,就是不能进行更改、新增、删除等操作。
3、如果按上面的方法建立了视图,那么你的C表就可以不要了,作查询、统计都可以从视图s1中取。
你看看这样能不能解决你的问题?