2011-12-13 87 views
0

我有兩個表組合兩個查詢(MS SQL)

一個表以「產品ID」連接「客戶端ID」

TABLE A 

ClientID ProductID 
1  2 
1  4 
1  6 
2  3 
2  5 

再有是記錄的時間與所花費的量的另一種表產品:

TABLE B 
ProductID Time Date_added 
2  10 (datetime) 
4  2 (datetime) 
2  3 (datetime) 
4  1 (datetime) 

如何合併兩個查詢:

一個查詢來獲取所有的產品ID」 s與客戶關聯

SELECT ProductID FROM TABLE_A where ClientID = 1 

然後獲得與這些產品一起度過的所有時間的每月總和?

SELECT SUM(time) from Table_B WHERE DATEPART(month, Date_added) = 8 AND ProductID = (products from the previous query?) 
+1

時間不在表-A – danludwig 2011-12-13 18:44:26

+0

列@好的,我一開始沒有檢查過。 – Yuck 2011-12-13 18:46:57

回答

3

聽起來像是你想連接語句,走在黑暗中拍攝,但可能

SELECT A.ClientID,SUM(B.Time) 
    FROM 
    TABLE A AS A 
    LEFT JOIN 
    TABLE B AS B ON (A.ProductID = B.ProductID) 
    WHERE 
    DATEPART(month, B.Date_added) = 8 
    GROUP BY 
    A.ClientID 

這將顯示所有產品的總時間由客戶ID爲分組。這也包括那些沒有花在產品爲一個月

0

你真的很接近。

SELECT SUM(B.time) 
FROM Table_B B INNER JOIN 
    Table_A A ON B.ProductID = A.ProductID 
WHERE DATEPART(month, B.Date_added) = 8 
    AND A.ClientID = 1 
; 
+0

爲了SUM(),你不需要有一個GROUP BY子句嗎? – danludwig 2011-12-13 18:51:32

+1

@olivehour不是如果它是唯一被返回的列,OP就是這樣寫這個問題的。 – Yuck 2011-12-13 18:52:17

0
SELECT SUM(time) from Table_B 

WHERE DATEPART(month, Date_added) = 8 
AND ProductID IN (SELECT ProductID FROM TABLE_A where ClientID = 1) 
  • 更新爲,而不是隨時使用的客戶端=
0
SELECT SUM(time) 
FROM B 
Join A on A.productID = B.ProductID 
WHERE where a.clientID =1 
group my month(b.date);