2014-10-17 75 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 

这种解决方案可能有一个更优雅的选择,也许你以后可能会发现它。 =)