Logo Hardware.com.br
atirm82
atirm82 Novo Membro Registrado
16 Mensagens 0 Curtidas

Relacionamentos e consultas SQL

#1 Por atirm82 27/02/2015 - 16:40
Boa tarde!
Preciso fazer uma consulta que me retorne registros de tr~es tabelas, que se relacionam entre si, porém, quando uma delas não tem informação (é null), não retorna o dado, mesmo existindo nas outras duas, como ajusto isto?

Tabela 1
codigo nome

tabela 2
codigo ocorrencia

tabela 3
codigo horas trabalhadas

Quiando o funcionário não tem ocorrencia, ele não retorna as horas trabalhadas, como acerto este relacionamento para trazer mesmo quando for nul?
atirm82
atirm82 Novo Membro Registrado
16 Mensagens 0 Curtidas
#5 Por atirm82
03/03/2015 - 10:21
Segue a consulta, acontece que tenho casos em que só existem informações na AAFHTFUN, porém, como a amovfun é nula, não retorna:

SELECTP.CHAPA,PFUNC.NOME,PFUNCAO.NOME'FUNCAO',
(SELECTSUM((R.HTRAB))
FROM
AAFHTFUN
WHERE
R.CHAPA=P.CHAPA AND
R.DATABETWEEN'2015-01-21'AND'2015-02-21')'HORAS TRABALHADAS',
CODEVE_CODEVE1=MAX(CASEWHENP.CODEVE='0449'THEN (P.NUMHORAS)END),
CODEVE_CODEVE2=MAX(CASEWHENP.CODEVE='0608'THEN (P.NUMHORAS)END),
CODEVE_CODEVE3=MAX(CASEWHENP.CODEVE='0451'THEN (P.NUMHORAS)END),
CODEVE_CODEVE4=MAX(CASEWHENP.CODEVE='9192'THEN (P.NUMHORAS)END),
CODEVE_CODEVE5=MAX(CASEWHENP.CODEVE='9185'THEN (P.NUMHORAS)END),
CODEVE_CODEVE6=MAX(CASEWHENP.CODEVE='0222'THEN (P.NUMHORAS)END),
CODEVE_CODEVE7=MAX(CASEWHENP.CODEVE='0221'THEN (P.NUMHORAS)END),
PFUNC.CODCOLIGADA,
PFUNC.CODSECAO
FROM
PFUNC
LEFT JOIN AMOVFUN AS P (NOLOCK) ON PFUNC.CHAPA=P.CHAPAANDPFUNC.CODCOLIGADA=P.CODCOLIGADA
LEFT JOIN PFUNCAO (NOLOCK)ON PFUNCAO.CODCOLIGADA=PFUNC.CODCOLIGADA ANDPFUNCAO.CODIGO=PFUNC.CODFUNCAO
LEFT JOIN PSECAO (NOLOCK)ONPFUNC.CODCOLIGADA=PSECAO.CODCOLIGADA
LEFT JOIN PEVENTO (NOLOCK)ON PEVENTO.CODIGO=P.CODEVEANDPEVENTO.CODCOLIGADA=P.CODCOLIGADA
WHERE
PFUNC.CODSECAOLIKE'%0172%' AND
P.INICIOPER>='2015-01-21' AND
P.FIMPER<='2015-02-21'
GROUP BY
P.CHAPA,PFUNC.NOME,PFUNCAO.NOME,PFUNC.CODCOLIGADA,PFUNC.CODSECAO
ORDER BY PFUNC.NOME
TRONNER
TRONNER Cyber Highlander Registrado
32.2K Mensagens 7.3K Curtidas
#9 Por TRONNER
03/03/2015 - 11:07
atirm82 disse:
Ai , pessoal, li o artigo que o Newuser100, recomendou e encontrei a solução, mantive o left join, porém retirei ua condição do where que limitava a tabela amovfun, como o join mantém a condição da outra cláusula, deu certo. valeu, este fórum ajuda bastante, caso encontrem outra forma, me avisem

É o TOTVS/RM Labore não é ?! ze_bonitinho.png
Dependendo dos JOINS até a sequência das tabelas pode influenciar na exibição ou omissão de campos também mostrando_dentes.png
cool.png**Quando pensar ser um Golias, cuidado para não encontrar algum Davi**
veja.png Conheça os Poderosos e Gratuitos [ Iperius Backup ] e [ Iperius Remote ]
veja.png Todo dia um software novo e grátis [ clicando aqui ]
boa.gif Faça valer a sua voz com o Mudamos+ { https://www.mudamos.org }
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal