请教高手,一个数据库查询的问题,散分100

bbh2002 2003-01-04 06:00:58
我用的是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


现在我要统计“产品基本信息表”中各类产品的库存量,并与“产品类别表”中设定的各自类别的警戒库存量比较,如果低于各自的警戒库存量就出现提示信息,要求在一个查询遍历中实现,是不是需要游标和存储过程?实现过程该怎样写?请各位大侠帮忙,不胜感激。
...全文
7 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zsbs 2003-02-26
只要一条包含子查询的sql语句就可以实现了呀
回复
京霾 2003-02-26
统计“产品基本信息表”中各类产品的库存量
select 类别名称,count(*)from 产品基本信息表 group by 类别名称
回复
klyh 2003-02-26
你这样可以吗?
你增加一个低于库存的产品的警戒表,有两个字段:产品类别、数量;
然后编写一个存储过程
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;

然后你通过查询警戒表,可以知道什么产品低于各自的警戒库存量!


你看看吧,也许你有更好的方法!
回复
myling 2003-02-26
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,
现在我要统计“产品基本信息表”中各类产品的库存量,

产品名称 类别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
回复
zsbs 2003-02-26
所有低于各自警戒库存量的产品类别及库存量:

select A.类别名称,count(B.*) from 产品类别表 A,产品基本信息表 B
where A.类别ID=B.类别ID
and (A.警戒库存量>
(select count(C.*) form 产品基本信息表 C group by C.类别ID))
group by A.类别名称
回复
prosectinfo 2003-01-07
//你的表结构不完整
//存储过程 返回所有超过警戒库存量的类别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
回复
IdShuLin 2003-01-07
写一个存储过程,在里边统计和比较,通过返回值确定是否要提出警告
回复
CatEgg2002 2003-01-06
应该先在产品基本信息表中加一个
“库存量”字段吧
回复
bigtree0906 2003-01-06
"产品基本信息表”中各类产品的库存量都没有,怎么比呀.:)
回复
dyf2001 2003-01-05
所有低于警戒库存量产品
select pi.*
from productinfo pi, productkind pk
where pi.kindid = pk.kindid
and pi.qty < pk.qty
回复
gxh973121 2003-01-05
你说的不明白,表也有问题,不过解决并不那么麻烦只用一查询就
回复
goodloop 2003-01-05
inc
回复
Billy_Chen28 2003-01-04
问题说清楚些:)
回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1566

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告