请教高手,一个数据库查询的问题,散分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


现在我要统计“产品基本信息表”中各类产品的库存量,并与“产品类别表”中设定的各自类别的警戒库存量比较,如果低于各自的警戒库存量就出现提示信息,要求在一个查询遍历中实现,是不是需要游标和存储过程?实现过程该怎样写?请各位大侠帮忙,不胜感激。
...全文
43 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
问题说清楚些:)

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧