有三个表:products(productkey,name,date.....),st2008(stockInOutkey,productkey,nature,department,unit,ToStock,OutStock,date,....),st2009(stockInOutkey,productkey,nature,department,unit,ToStock,OutStock,date,....)
其中productkey是products表的主键,stockInOutKey是st2008表的主键。st2008和st2009的表结构相同。现在要实现如下查询:
 在页面输入要查询的productkey还有开始和结束时间。
(1)如果时间在2008年内就用products和st2008做关联查询。
 (2)如果时间在2009年内就用products和st2009做关联查询。
  (3)如果时间是在2008年末和2009年初就用products和st2008,st2009做关联查询。
这个在mysql中用存储过程 如何实现?谢谢先

解决方案 »

  1.   

    贴记录及要求结果出来看看,用SP的IN参数试试
      

  2.   

    建议在你的程序中做,在程序中写个方法来实现这个,在 存储过程 中反而复杂,mySQL的存储过程 不能返回记录集,你只能再用个临时表,如果多用户并发访问反而复杂。
      

  3.   

    productkey int(11) not null, name varchar(40),date date, toStock,outStock(decimal(11,2),
    department varchar(10),inv_ID varchar(20)nature varchar(50) unit varchar(10),warehouse varchar(20)
    查询结果字段(products.productkey,products.name,st.date,st.ToStock,st.OutStock,st.nature,st.department,st.unit,st.inv_ID,st.warehouse)
    (st为st2008或st2009)开始和结束时间用st.date;
    create procedure pro_productQry(in productkey int(11),in BegDate date ,EndDate date)....
      

  4.   

    怎么 感觉mysql的存储过程看起来怪怪的,用起来不如ms-sql方便。。
      

  5.   

    你的表结构是:
    products(productkey,name,date.....)
    st2008(stockInOutkey,productkey,nature,department,unit,ToStock,OutStock,date,....)
    st2009(stockInOutkey,productkey,nature,department,unit,ToStock,OutStock,date,....) 
    我的存储过程是:
    DELIMITER //
    DROP PROCEDURE IF EXISTS testSearch //
    CREATE PROCEDURE testSearch(IN productKey INT,IN startTime timestamp,IN endTime timestamp)
    BEGIN
        IF((startTime<'2008-12-31 23:59:59') AND (endTime<'2008-12-31 23:59:59')) THEN
            SELECT * FROM products p,st2008 s8 WHERE p.productkey=s8.productkey;
        ELSE IF((startTime>'2008-12-31 23:59:59') AND (endTime>'2008-12-31 23:59:59')) THEN
            SELECT * FROM products p,st2009 s9 WHERE p.productkey=s9.productkey;
             ELSE IF((startTime<'2008-12-31 23:59:59') AND (endTime>'2008-12-31 23:59:59')) THEN
               SELECT * FROM products p,st2008 s8,st2009 s9 WHERE p.productkey=s9.productkey AND p.productkey=s8.productkey;
                  END IF;
              END IF;
        END IF;
    END;
    //
    DELIMITER ;
    不知道是这个要求不?
    仅做个抛砖引玉之用,呵呵。