2014-10-17 55 views
1

我有我的SQL Server的兩個表2008年一個是項目列表,另一個是項目流程是這樣的:如何從部分依賴的多表中進行選擇?

項目表:

item_id item_name 
-------------------- 
     1  item1 
     2  item2 
     3  item3 

和流量表:

date  item_id qty 
------------------------- 
2014-10-15  1  5 
2014-10-15  2  3 
2014-10-16  1  7 
2014-10-17  1  4 
2014-10-17  2  2 
2014-10-17  3  1 

我怎樣才能保持在流量表中沒有記錄的項目表中的每個數據,所以我可以得到如下結果:

date  item qty 
----------------------- 
2014-10-15 item1 5 
2014-10-15 item2 3 
2014-10-15 item3 0 
2014-10-16 item1 7 
2014-10-16 item2 0 
2014-10-16 item3 0 
2014-10-17 item1 4 
2014-10-17 item2 2 
2014-10-17 item3 1 

回答

0

你可能會尋找的cross join組合和left join

SELECT dt.date, item.item_name, ISNULL(flow.qty,0) 
FROM item CROSS JOIN (SELECT DISTINCT date from flow) dt 
LEFT JOIN flow on item.item_id=flow.item_id and dt.date=flow.date 
ORDER BY dt.date, item.item_name 

這種解決方案可能有一個更優雅的選擇,也許你以後可能會發現它。 =)