Jump to content

Recommended Posts

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'

Share this post


Link to post
Share on other sites

@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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.