我用的是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
现在我要统计“产品基本信息表”中各类产品的库存量,并与“产品类别表”中设定的各自类别的警戒库存量比较,如果低于各自的警戒库存量就出现提示信息,要求在一个查询遍历中实现,是不是需要游标和存储过程?实现过程该怎样写?请各位大侠帮忙,不胜感激。

解决方案 »

  1.   

    所有低于警戒库存量产品
    select pi.*
    from productinfo pi, productkind pk
    where pi.kindid = pk.kindid
      and pi.qty < pk.qty
      

  2.   

    //你的表结构不完整
    //存储过程 返回所有超过警戒库存量的类别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
      

  3.   

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

  4.   

    现在我要统计“产品基本信息表”中各类产品的库存量,
    现在我要统计“产品基本信息表”中各类产品的库存量,
    现在我要统计“产品基本信息表”中各类产品的库存量,
    现在我要统计“产品基本信息表”中各类产品的库存量,
    现在我要统计“产品基本信息表”中各类产品的库存量,
    现在我要统计“产品基本信息表”中各类产品的库存量,产品名称 类别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
      

  5.   

    你这样可以吗?
    你增加一个低于库存的产品的警戒表,有两个字段:产品类别、数量;
    然后编写一个存储过程
    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;然后你通过查询警戒表,可以知道什么产品低于各自的警戒库存量!
    你看看吧,也许你有更好的方法!
      

  6.   

    统计“产品基本信息表”中各类产品的库存量
        select 类别名称,count(*)from 产品基本信息表 group by 类别名称
      

  7.   

    只要一条包含子查询的sql语句就可以实现了呀