2014-11-14 112 views
-2

我有3個表。SQL Server:聯接多個表

此表用於存儲客戶的相關信息

Customers

ID   Name 
1   'Company A' 
2   'Company B' 
3   'Company C' 

此表保存訂單登錄

Orders

ID   CustomerID   Quantity  Date 
1   1     200   01/01/2001 
2   1     150   01/02/2001 
3   2     500   01/02/2001 
4   3     200   01/03/2001 
5   2     400   01/03/2001 
6   3     200   01/04/2001 

此表保存價格,我們假設我只賣1個職業球員管道,並且每個客戶有自己單獨的價格和這樣

示例總量:爲客戶ID 1,從0到100之間的總數量THEN爲每一個所述價格是200

Price

CustomerID   From   To   Price 
1     0    100   200 
1     101   500   190 
1     501   ?   180 
2     0    150   195 
2     151   800   180 
2     801   ?   170 
3     0    400   180 
3     401   ?   180 

我想我的輸出是這樣的:

Name   TotalQuantity   Price 
--------------------------------------------- 
Company A  350      190 
Company B  900      170 
Company C  400      180 

我知道,我需要SUMQuantity先與下表Price比較,但我該怎麼做?我應該輸入什麼?「呃...例如超過501,801,401在那Price表中?

+0

它以StackOverflow的精神向我們展示了在發佈您的問題之前您已經嘗試了哪些查詢,以便我們可以看到您在這個問題上付出了一些努力,除了提出問題。 – 2014-11-14 13:23:50

回答

0

您感興趣的每個客戶有兩件事:訂單總額和相應價格。因此,讓我們加入這些與客戶表:

select c.id, c.name, p.price 
from customers c 
join 
(
    select customerid, sum(quantity) as total 
    from orders 
    group by customerid 
) o on o.customerid = c.id 
join price p on p.customerid = o.customerid and o.total between p.from and p.to; 

至於沒有上限:存儲一些超巨大的價值和你做。或者存儲空值並使用和o.total between p.from and coalesce(p.to,o.total)