SQL权限排除JOIN和WHERE问题

时间:2015-11-18 00:34:43

标签: sql sql-server-2008 join right-join

我正在尝试使用正确的排除连接创建视图:

enter image description here

然而,还有一个冒号,我也想做一个WHERE。在这种情况下:

WHERE table.colon != 'x';

因为这个原因我试过了:

WHERE A.key IS NULL AND table.colon != 'x'; 

但是当我运行它时,我运行它时没有显示任何数据。 任何人都可以帮我解决这个问题吗?

先谢谢。

更新,这是我想要运行的查询:

SELECT     dbo.DimServere.Servernavn, dbo.DimServere.Serverstatus, dbo.IderaPatchAnalyzer.IP_Adresse, dbo.IderaPatchAnalyzer.Release_, dbo.IderaPatchAnalyzer.Level_, 
                      dbo.IderaPatchAnalyzer.Edition_, dbo.IderaPatchAnalyzer.Build, dbo.IderaPatchAnalyzer.Updates_Available, dbo.IderaPatchAnalyzer.Supported_, 
                      dbo.IderaPatchAnalyzer.Support_Status
FROM         dbo.DimServere RIGHT OUTER JOIN
                      dbo.IderaPatchAnalyzer ON dbo.DimServere.TcpIpAddress = dbo.IderaPatchAnalyzer.IP_Adresse AND dbo.DimServere.Serverstatus <> 'Disposed/Retired'
WHERE     (dbo.DimServere.TcpIpAddress IS NULL)

2 个答案:

答案 0 :(得分:1)

将条件移动到JOIN子句中。

SELECT *
FROM 
    Table1
    LEFT JOIN Table2
        ON Table1.Field = Table2.Field AND
        Table2.OtherField != 'x'
WHERE Table2.Field IS NULL

答案 1 :(得分:0)

这个想法是正确的。但是,我想null列中有dbo.DimServere.Serverstatus个值。因为您正在使用比较运算符,所以此条件总是失败(与null的比较未知)并且join条件不满足(因为您AND使用其他条件)而且你没有得到任何结果。

要解决此问题,请在isnull(dbo.DimServere.Serverstatus, 'somevalue')条件中使用join

SELECT dbo.DimServere.Servernavn, dbo.DimServere.Serverstatus,
dbo.IderaPatchAnalyzer.IP_Adresse, dbo.IderaPatchAnalyzer.Release_,
dbo.IderaPatchAnalyzer.Level_, dbo.IderaPatchAnalyzer.Edition_, 
dbo.IderaPatchAnalyzer.Build, dbo.IderaPatchAnalyzer.Updates_Available,    
dbo.IderaPatchAnalyzer.Supported_, dbo.IderaPatchAnalyzer.Support_Status
FROM dbo.DimServere RIGHT OUTER JOIN
dbo.IderaPatchAnalyzer ON dbo.DimServere.TcpIpAddress = dbo.IderaPatchAnalyzer.IP_Adresse 
AND isnull(dbo.DimServere.Serverstatus, 'somevalue') <> 'Disposed/Retired' 
WHERE dbo.DimServere.TcpIpAddress IS NULL