【发布时间】:2016-05-25 21:57:12
【问题描述】:
我在尝试编写的查询时遇到问题。不幸的是,我只能查询数据库而不能更改架构。以下是一些简化的示例表:
Table 1
itemID sale date
----------------------------
1 1/2015
1 3/2016
2 5/2016
2 1/2015
Table 2
itemID colorID price
--------------------------------------
1 1 23
1 2 10
1 3 13
2 1 11
2 2 14
2 3 18
Table 3
ColorID color
---------------------------------------
1 Red
2 Blue
3 Green
Table 4
SaleBegin SaleEnd ColorID
----------------------------------------
1/1/2014 12/31/2014 1
1/1/2015 12/31/2015 2
1/1/2016 12/31/2016 3
现在我需要一个查询来获取第一个表中两个项目 ID 的价格和颜色。我不确定如何使用这个模式来做到这一点,即使只是为了一个。我试过类似的东西:
SELECT item_id, price, color FROM Table1 T1
INNER JOIN Table2 T2
ON T1.ItemID=T2.ItemID
INNER JOIN Table3 T3
ON T2.ColorID=T3.ColorID
INNER JOIN Table4 T4
ON T3.ColorID=T4.ColorID
WHERE T1.itemID between SaleBegin AND SaleEnd
但这对我不起作用,而是为我提供每件商品的所有可能颜色和价格。我究竟做错了什么?我如何获得这些值?预期结果应如下所示:
itemID color price
------------------------------------
1 Blue 10
1 Green 13
2 Green 18
2 Blue 14
【问题讨论】:
-
不应该是
WHERE T1.SaleDate between SaleBegin AND SaleEnd吗? -
您是否要在每次销售期间查找每件商品的价格和颜色?
标签: sql sql-server join