我用的是Delphi5+SQLserver2000在ADOConnection下作B/S结构程序,现遇到一个问题:
数据库data1中有两个表:产品类别表 类别ID 类别名称 警戒库存量
0001 a 10
0002 b 20产品基本信息表产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500
现在我要统计“产品基本信息表”中各类产品的库存量,并与“产品类别表”中设定的各自类别的警戒库存量比较,如果低于各自的警戒库存量就出现提示信息,要求在一个查询遍历中实现,是不是需要游标和存储过程?实现过程该怎样写?请各位大侠帮忙,不胜感激。
数据库data1中有两个表:产品类别表 类别ID 类别名称 警戒库存量
0001 a 10
0002 b 20产品基本信息表产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500
现在我要统计“产品基本信息表”中各类产品的库存量,并与“产品类别表”中设定的各自类别的警戒库存量比较,如果低于各自的警戒库存量就出现提示信息,要求在一个查询遍历中实现,是不是需要游标和存储过程?实现过程该怎样写?请各位大侠帮忙,不胜感激。
select pi.*
from productinfo pi, productkind pk
where pi.kindid = pk.kindid
and pi.qty < pk.qty
//存储过程 返回所有超过警戒库存量的类别ID
//假定产品类型表productType ;添加"库存量"字段
//产品信息表productInfo
create procedure GetOverPro
as
begin
select producttype.* from producttype A,
(
select 类别ID,count(*) as UseCount from ProductInfo
group by 类别ID
order by 类别Id
) as B
where A.类别Id=B.类别Id
and A.警戒库存量+B.usecount>A.库存量
end
where A.类别ID=B.类别ID
and (A.警戒库存量>
(select count(C.*) form 产品基本信息表 C group by C.类别ID))
group by A.类别名称
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500产品名称 类别ID 类别名称 价格
abc 0001 a 1000
bcd 0002 b 500
cde 0001 a 1000
def 0002 b 500
你增加一个低于库存的产品的警戒表,有两个字段:产品类别、数量;
然后编写一个存储过程
CREATE OR REPLACE PROCEDURE CHECKNUM
IS
Str VARCHAR2;
NUM1 NUMBER(4);
NUM2 NUMBER(4);
CURSOR C1 SELECT 类别ID,警戒库存量 FROM 产品类别表;
BEGIN
FETCH C1 INTO Str,NUM1;
EXIT WHEN C1 NOTFOUND;
SELECT COUNT(*)INTO NUM2 FROM 产品基本信息表 WHERE 类别ID=Str;
IF NUM1 〉NUM2 THEN
INSERT INTO 警戒表 VALUES(Str,NUM2);
COMMIT;
END LOOP;
CLOSE C1;
END;然后你通过查询警戒表,可以知道什么产品低于各自的警戒库存量!
你看看吧,也许你有更好的方法!
select 类别名称,count(*)from 产品基本信息表 group by 类别名称