首页 > 解决方案 > SQL JOIN 如果存在

问题描述

我有一个使用 JOIN 来获取其他数据库中的一些数据的查询。但在特定情况下,我的条目不会有任何数据做加入。所以,它根本不会返回任何东西。

如果不存在任何兼容数据,我如何忽略 join 语句?

这是我的 SQL 查询:

SELECT 
    a.Id,                                                                      
    a.NomeCompleto,                                                                  
    a.CPF,                                                                           
    a.RelacaoFuncional,                                                              
    a.Estabelecimento,                                                               
    UPPER(LEFT(a.Cargo, 1)) + LOWER(SUBSTRING(a.Cargo, 2, LEN(a.Cargo))) as Cargo,   
    b.Unidade,                                                                       
    c.Departamento,                                                                  
    d.CentroCusto + ' - ' + Desc_CCUsto as CentroCusto,                              
    a.UsuarioEspelho,                                                                
    a.Observacao,                                                                    
    a.UsuarioRequerente,                                                             
    a.Status,                                                                        
    CONVERT(NVARCHAR(10), a.Data, 103) AS Data,                                      
    a.AprovacaoInfra,                                                                
    a.AprovacaoSistemas,                                                             
    a.Usuario,                                                                       
    a.TipoSolicitacao                                                                 
FROM
    [SGW].[dbo].[TI01A] a                            
JOIN
    [SGW].[dbo].[Unidade] b ON a.Id_Unidade = b.UnidadeID                    
JOIN
    [SGW].[dbo].[Departamento] c ON a.Id_Departamento = c.DeptoID                
JOIN
    [HAZTEC_ORC].[dbo].[DimCentroCusto] d ON a.CentroCusto = d.CentroCusto       
WHERE 
    a.Id = 6

标签: sqlsql-server

解决方案


你需要使用

LEFT JOIN

您的查询应如下所示

SELECT a.Id,                                                                      
a.NomeCompleto,                                                                  
a.CPF,                                                                           
a.RelacaoFuncional,                                                              
a.Estabelecimento,                                                               
UPPER(LEFT(a.Cargo, 1)) + LOWER(SUBSTRING(a.Cargo, 2, LEN(a.Cargo))) as Cargo,   
b.Unidade,                                                                       
c.Departamento,                                                                  
d.CentroCusto + ' - ' + Desc_CCUsto as CentroCusto,                              
a.UsuarioEspelho,                                                                
a.Observacao,                                                                    
a.UsuarioRequerente,                                                             
a.Status,                                                                        
convert(nvarchar(10), a.Data, 103) as Data,                                      
a.AprovacaoInfra,                                                                
a.AprovacaoSistemas,                                                             
a.Usuario,                                                                       
a.TipoSolicitacao                                                                 
FROM[SGW].[dbo].[TI01A] a                            
LEFT JOIN[SGW].[dbo].[Unidade] b on a.Id_Unidade = b.UnidadeID                    
LEFT JOIN[SGW].[dbo].[Departamento] c on a.Id_Departamento = c.DeptoID                
LEFT JOIN[HAZTEC_ORC].[dbo].[DimCentroCusto] d on a.CentroCusto = d.CentroCusto       
WHERE A.Id = 6  

推荐阅读