Adelson joão da Silv Postado 24 de Novembro de 2021 Tópicos Que Criei: 2 Tópicos/Dia: 0.00 Meu Conteúdo: 3 Conteúdo/Dia: 0.00 Reputação: 1 Pontos/Conquistas: 38 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 42 Denunciar Compartilhar Postado 24 de Novembro de 2021 Prezados, bom dia! Gostaria que alguém pudesse ajudar em relação a uma consulta SQL, é que provavelmente uma das tabelas que estou usando não faz relacionamento com as demais tabelas, e com isso deve está duplicando as informações, ou seja, gostaria de ajuda no que diz respeito ao relacionamento de tabelas PFUNC x VFAIXASALARIAL. Segue a consulta: SELECT PFUNC.CHAPA,PPESSOA.SEXO,PFUNC.NOME,PFUNCAO.NOME,PFUNCAO.CBO, PFUNC.SALARIO, PFUNC.CODTIPO,PFUNC.DATAADMISSAO,PPESSOA.CPF,PSECAO.DESCRICAO,PSECAO.CODDEPTO, PFUNC.DATADEMISSAO,PPESSOA.DTNASCIMENTO,PFUNC.CODSITUACAO,VFAIXASALARIAL.NOMEFAIXA FROM PFUNC, PPESSOA, PSECAO, PFUNCAO, VFAIXASALARIAL WHERE PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO AND PFUNC.CODPESSOA = PPESSOA.CODIGO AND PFUNCAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFUNCAO.CODIGO = PFUNC.CODFUNCAO AND PFUNC.CODSITUACAO <> 'D' AND PFUNC.CODTIPO <> 'T' AND PFUNC.CHAPA <> '0000000' Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
luisgustavogomes Postado 25 de Novembro de 2021 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 470 Conteúdo/Dia: 0.21 Reputação: 132 Pontos/Conquistas: 3.143 Conteúdo Resolvido: 0 Dias Ganho: 63 Status: Offline Idade: 35 Dispositivo: Windows Denunciar Compartilhar Postado 25 de Novembro de 2021 @Adelson joão da Silv, bom dia! Tudo bem ? Segue uma possível solução, porém utilizei um LEFT JOIN na tabela DBO.VFAIXASALARIAL pois vai depender do ambiente se está obrigatório ou não.... se tiver obrigatório no seu remova o LEFT... antes de colocar em produção verifique os index para execução, pois ao testar aqui no meu ambiente obtive um SCAN da PPESSOA e dependendo do volume ficará muito lento. /* USE [CORPORERM] GO SET NOCOUNT ON; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT PFUNC.CHAPA ,PPESSOA.SEXO ,PFUNC.NOME ,PFUNCAO.NOME ,PFUNCAO.CBO ,PFUNC.SALARIO ,PFUNC.CODTIPO ,PFUNC.DATAADMISSAO ,PPESSOA.CPF ,PSECAO.DESCRICAO ,PSECAO.CODDEPTO ,PFUNC.DATADEMISSAO ,PPESSOA.DTNASCIMENTO ,PFUNC.CODSITUACAO ,VFAIXASALARIAL.NOMEFAIXA FROM DBO.PFUNC JOIN DBO.PPESSOA ON (PFUNC.CODPESSOA = PPESSOA.CODIGO ) JOIN DBO.PSECAO ON (PFUNC.CODCOLIGADA = PSECAO.CODCOLIGADA AND PFUNC.CODSECAO = PSECAO.CODIGO) JOIN DBO.PFUNCAO ON (PFUNC.CODCOLIGADA = PFUNCAO.CODCOLIGADA AND PFUNC.CODFUNCAO = PFUNCAO.CODIGO) LEFT JOIN DBO.VFAIXASALARIAL ON (PFUNC.CODCOLIGADA = VFAIXASALARIAL.CODCOLIGADA AND PFUNC.[GRUPOSALARIAL] = VFAIXASALARIAL.CODFAIXA) WHERE PFUNC.CODCOLIGADA = 1 AND PFUNC.CODSITUACAO <> 'D' AND PFUNC.CODTIPO <> 'T' AND PFUNC.CHAPA <> '0000000' GO */ Espero ter ajudado. Abraços. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.