问题1
有2个表,GOODS,产品资料表,STOREMAIN,库存表,
库存表里存放多个仓库的库存,用字段:STOR_NAME标识
现在要实现把产品资料里有,而库存某一仓库没有的产品导入库存对应的仓库里面
由于产品资料数据很多1万多条,4个分仓就有4万条记录,用NOT IN 语句可以实现,可时间非常长,约30分钟,知道用NOT EXISTS,可以很快,希望改成后者GOODS:
GODS_CODE:产品编码
01
02
.........STOREMAIN:
产品编码:GODS_CODE 产品数量:gods_amou 仓库编号:stor_name
01 0 1
02 0 1
02 0 2
............
现在要把产品编号为01的加到2号仓库里
用以下not in语句实现
with frmdatamod.TempQ do
begin
Close;
SQL.Clear;
SQl.Add('insert into storemain (gods_amou,stor_name,gods_code) ') ;
SQL.Add(' SELECT :gods_amou ,:stor_name,gods_code ');
SQL.Add(' FROM goods ');
SQL.Add(' WHERE gods_code not in (select gods_code ');
SQL.Add(' from storemain where stor_name=:stor_name2 ) ');
Parameters.ParamByName('gods_amou').Value:=0;
Parameters.ParamByName('stor_name').Value:=upublic.stor_name;
Parameters.ParamByName('stor_name2').Value:=upublic.stor_name;
ExecSQL;
end;
改成not exists
with frmdatamod.TempQ do
begin
Close;
SQL.Clear;
SQl.Add('insert into storemain (gods_amou,stor_name,gods_code) ') ;
SQL.Add(' SELECT :gods_amou ,:stor_name,gods_code ');
SQL.Add(' FROM goods ');
SQL.Add(' WHERE not exists (select gods_code ');
SQL.Add(' from storemain where goods.gods_code=storemain.gods_code and storemain.stor_name=:stor_name2 ) ');
Parameters.ParamByName('gods_amou').Value:=0;//置库存0
Parameters.ParamByName('stor_name').Value:=upublic.stor_name;
Parameters.ParamByName('stor_name2').Value:=upublic.stor_name;
ExecSQL;
end;
注:upublic.stor_name表示当前对应的仓库编号问题2:
有一客户想了解员工的收发邮件情况,员工的邮箱都是同一域名下的,可以设置每一邮箱帐号转发的经理邮箱即可,但怎么可以截获员工发出去的邮件呢(如果硬让员工抄送是不可能的),请问可以用什么软件实现呢,尽量不要EXCHANGE SERVER,负荷太大,有一台2000SERVER服务器,ADSL上网,没有固定IP的
有2个表,GOODS,产品资料表,STOREMAIN,库存表,
库存表里存放多个仓库的库存,用字段:STOR_NAME标识
现在要实现把产品资料里有,而库存某一仓库没有的产品导入库存对应的仓库里面
由于产品资料数据很多1万多条,4个分仓就有4万条记录,用NOT IN 语句可以实现,可时间非常长,约30分钟,知道用NOT EXISTS,可以很快,希望改成后者GOODS:
GODS_CODE:产品编码
01
02
.........STOREMAIN:
产品编码:GODS_CODE 产品数量:gods_amou 仓库编号:stor_name
01 0 1
02 0 1
02 0 2
............
现在要把产品编号为01的加到2号仓库里
用以下not in语句实现
with frmdatamod.TempQ do
begin
Close;
SQL.Clear;
SQl.Add('insert into storemain (gods_amou,stor_name,gods_code) ') ;
SQL.Add(' SELECT :gods_amou ,:stor_name,gods_code ');
SQL.Add(' FROM goods ');
SQL.Add(' WHERE gods_code not in (select gods_code ');
SQL.Add(' from storemain where stor_name=:stor_name2 ) ');
Parameters.ParamByName('gods_amou').Value:=0;
Parameters.ParamByName('stor_name').Value:=upublic.stor_name;
Parameters.ParamByName('stor_name2').Value:=upublic.stor_name;
ExecSQL;
end;
改成not exists
with frmdatamod.TempQ do
begin
Close;
SQL.Clear;
SQl.Add('insert into storemain (gods_amou,stor_name,gods_code) ') ;
SQL.Add(' SELECT :gods_amou ,:stor_name,gods_code ');
SQL.Add(' FROM goods ');
SQL.Add(' WHERE not exists (select gods_code ');
SQL.Add(' from storemain where goods.gods_code=storemain.gods_code and storemain.stor_name=:stor_name2 ) ');
Parameters.ParamByName('gods_amou').Value:=0;//置库存0
Parameters.ParamByName('stor_name').Value:=upublic.stor_name;
Parameters.ParamByName('stor_name2').Value:=upublic.stor_name;
ExecSQL;
end;
注:upublic.stor_name表示当前对应的仓库编号问题2:
有一客户想了解员工的收发邮件情况,员工的邮箱都是同一域名下的,可以设置每一邮箱帐号转发的经理邮箱即可,但怎么可以截获员工发出去的邮件呢(如果硬让员工抄送是不可能的),请问可以用什么软件实现呢,尽量不要EXCHANGE SERVER,负荷太大,有一台2000SERVER服务器,ADSL上网,没有固定IP的
insert into stormain(gods_amou,stor_name,gods_code)
select 0 as gods_amou,a.stor_name,a.gods_code
from
(
select distinct goods.gods_code,stormain.stor_name
from goods
cross join stormain
)as a
where
not exists(select * from stormain
where gods_code=a.gods_code and stor_name=a.stor_name)
-------------------------------------------------------------------
只对单个仓库编号增添:
insert into stormain(gods_amou,stor_name,gods_code)
select 0 as gods_amou,:stor_name,goods.gods_code
from
goods
where
not exists(select * from stormain where gods_code=goods.gods_code and stor_name=:stor_name2)
-------------------------
参数stor_name和stor_name2自己从程序带入。
第一个问题已经解决,
第2个问题,问了一个搞过Exchage Server的,他说只能控制接受接收,发送没办法的
能说具体点吗?
SELECT a.gods_amou , b.stor_name, a.gods_code
FROM goods a, (select distinct gods_amou, stor_name) b
WHERE a.gods_amou=b.gods_amou
and not Exists(select 1 from from storemain where gods_amou=a.gods_amou and stor_name=b.stor_name )
--(select distinct stor_name from storemain) b 应该改成你的仓库编码列表
insert into storemain (gods_amou,stor_name,gods_code)
SELECT 0 as gods_amou , b.stor_name, a.gods_code
FROM goods a, (select distinct stor_name from storemain) b
WHERE not Exists(select 1 from from storemain where gods_code=a.gods_code and stor_name=b.stor_name )