2011-02-16 95 views
2

我是兩個月進入SQL入門課程,深夜,我畫了一片空白。初學SQL問題

我有兩個表格,一個客戶和一個訂單。對於所有訂單數量超過250.00的訂單中的兩個或更多訂單的客戶,我必須將所有客戶的信用額度提高百分之二十五。

我得到如何UPDATE CreditLimit * 1.25 and Cust with an order > 250,但我怎麼得到它來檢查他們是否已經超過250兩個訂單?

第二個問題,我們剛剛開始進行子查詢,並且我很難將它放入我的頭骨。我們班的教授提出的另一個問題是增加訂單超過信用額度的客戶的信用額度。 (信用額度在客戶表上,訂單和金額在訂單表上)。然後,我拿這個客戶並更新他的CreditLimit +1000。

+1

你問的問題不夠知道有沒有一個限度 - 保留問題分開,並指定一個數據庫,因爲他們都沒有工作一樣。 – 2011-02-16 07:26:56

回答

2

我被「已經做了兩個假設訂單'這意味着他們已經做出了至少2份訂單。如果恰好爲2,那麼ofc = 2.

編輯:根據Ravi的解釋,「2 250以上的訂單」也可能意味着客戶的累計支出。這當然是爲什麼模糊的要求下沉項目。

UPDATE c 
SET c.CreditLimit = c.CreditLimit * 1.25 
FROM Customers c 
WHERE 
(SELECT COUNT(*) FROM Orders o WHERE o.CustomerId = c.CustomerId AND o.OrderAmount > 250) 
>= 2 
+0

非常感謝。我知道這對你們來說簡直就是一件容易的事情,但我覺得戒菸很難。 – unit 2011-02-16 07:27:11

2

對於第一部分:使用GROUP BY的customerID和SUM的所有交易。然後,您可以得到所有誰做交易總結超過250

SELECT CustomerID 
FROM t_customers c INNER JOIN t_orders o ON c.CustomerID=o.CustomerID 
GROUP BY CustomerID 
HAVING SUM(TransactionAmnt) > 250; 

你可以參考這篇文章的詳細信息,子查詢客戶賬戶:http://msdn.microsoft.com/en-us/library/ms189575.aspx

+0

非常感謝! – unit 2011-02-16 07:28:00

1
UPDATE Customers 
SET CreditLimit = CreditLimit * 1.25 
FROM (
    SELECT CustomerId 
    FROM Orders 
    WHERE OrderTotal > 250 
    HAVING COUNT(*) >= 2 
) o 
WHERE o.CustomerId = Customers.Id