有三个表: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中用存储过程 如何实现?谢谢先
其中productkey是products表的主键,stockInOutKey是st2008表的主键。st2008和st2009的表结构相同。现在要实现如下查询:
在页面输入要查询的productkey还有开始和结束时间。
(1)如果时间在2008年内就用products和st2008做关联查询。
(2)如果时间在2009年内就用products和st2009做关联查询。
(3)如果时间是在2008年末和2009年初就用products和st2008,st2009做关联查询。
这个在mysql中用存储过程 如何实现?谢谢先
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)....
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 ;
不知道是这个要求不?
仅做个抛砖引玉之用,呵呵。