SQL查询:即使它们不匹配也返回值

时间:2013-07-05 07:16:22

标签: sql outer-join

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)  

2 个答案:

答案 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返回两个表的所有值,即使条件不匹配也是如此。因此,您的查询返回两个表的所有行。