2我有以下两个表及相关字段:
Values: id, data, quantity
Items: id, data, price
匹配取决于字段:id,data。我试图加入这两个表,以便如果对于相同的id和数据,在Values中有一个元素,但在Items中没有,则价格设置为0;如果项目中有元素但值不存在,则字段数量设置为0.
到目前为止,我已经编写了以下代码,但它并没有给我任何回复!!!
SELECT dbo.Values.id, dbo.Values.data, dbo.Values.quantity, dbo.Items.price
FROM dbo.Values FULL OUTER JOIN
dbo.Items ON dbo.Values.id = dbo.Items.id AND dbo.Values.data = dbo.Items.data
示例:
Values Items Join
(1, 05/07/2013 00:00:00, 2) (1, 05/07/2013 00:00:00, 20) (1, 05/07/2013 00:00:00, 2, 20)
(2, 23/06/2013 00:00:00, 50) (2, 03/02/2013 00:00:00, 1000) (2, 23/06/2013 00:00:00, 50, 0)
(2, 03/02/2013 00:00:00, 0, 1000)
答案 0 :(得分:1)
你的加入效果很好,但是你没有使用合并或者是无效的... fidle它。
SELECT ISNULL(dbo.[Values].id, dbo.Items.id ), ISNULL(dbo.[Values].DATA, dbo.Items.DATA), ISNULL(dbo.[Values].quantity, 0), ISNULL(dbo.Items.price, 0)
FROM dbo.[Values]
FULL OUTER JOIN dbo.Items ON dbo.[Values].id = dbo.Items.id AND dbo.[Values].data = dbo.Items.DATA
答案 1 :(得分:0)
FULL OUTER JOIN返回两个表的所有值,即使条件不匹配也是如此。因此,您的查询返回两个表的所有行。