2016-11-30 3 views
1

私の問題は、製品がX番号のために販売されていない場合、0.8で私の製品テーブルのすべての価格を掛ける手続きをしなければならないということです。月の私はこれ以上、さらにを得るように見えることはできません現時点では今日からXヶ月の月数に基づいて "割引"を与えるストアドプロシージャ

GO 
CREATE PROC newprice(@numberofmonth int) 
AS 
BEGIN 
DECLARE @today datetime 
SET @today = GetDate() 
SELECT product.productid, product.name 
FROM orders JOIN orderitem on orderitem.orderid = orders.orderid 
      JOIN product on product.productid = orderitem.productid 
WHERE orders.orderdate > (SELECT DATEADD(month, [email protected], @today)) 

UPDATE product set price = price * 0.8 where 
END 

希望すべてはそれ以上の説明なしに読んで理解するのに十分な透明性です。私はSQL Serverで作業しています。

答えて

0

私はあなたの問題completly.iはちょうどあなたの必要性は、この

GO CREATE PROC newprice(@numberofmonth int) 
AS 
BEGIN 
DECLARE @today datetime 
SET @today = GetDate() 
UPDATE product set price = price * 0.8 FROM orders JOIN orderitem on orderitem.orderid = orders.orderid JOIN product on product.productid = orderitem.productid WHERE orders.orderdate > 
(SELECT DATEADD(month, [email protected], @today)) 
END 
+0

を完璧に働いています。どうもありがとうございます – MrBawsEnough

0
CREATE PROCEDURE newprice(@numberofmonth int) 
AS 
BEGIN 

UPDATE product 
SET price = price * 0.8 
FROM product 
JOIN orderitem on product.productid = orderitem.productid 
JOIN orders on orderitem.orderid = orders.orderid 
WHERE orders.orderdate > (DATEADD(month, [email protected], GETDATE())) 

END 
0

を見て想定し理解していないよ、それはあなたが必要なものを作るかどうかを確認してください:

DECLARE @today datetime 
SET @today = GetDate() 

Select * FROM product 
--UPDATE product SET price = price * 0.8 
WHERE not exists (
    SELECT product.productid, product.name 
    FROM orders 
    INNER JOIN orderitem on orderitem.orderid = orders.orderid 
    WHERE orders.orderdate > (SELECT DATEADD(month, [email protected], @today))) 
関連する問題