Usuário com melhor resposta
CONSULTA SQL COM 3 TABELAS UMA SEM RELACIONAMENTO

Pergunta
-
Bom dia.
Estou com dificuldades de montar uma consulta SQL.
Preciso relacionar 3 tabelas: TMOV (MOVIMENTOS) FLAN (FINANCEIRO) e TTRA(TRANSPORTADOR)
Duas tabelas se relacionam entre si, a TMOV e a FLAN.
TMOV.CODCOLIGADA=FLAN.CODCOLIGADA AND
TMOV.IDMOV=FLAN.IDMOV
Preciso acrescentar nessa consulta o campo NOME DO TRANSPORTADOR e PLACA da TABELA TTRA, que não se relaciona com a FLAN.
A tabela TTRA, se relaciona com a TMOV.
TTRA.CODCOLIGADA=TMOV.CODCOLIGADA AND
TTRA.CODTRA=TMOV.CODTRA
Nos testes que estou fazendo, não consigo trazer os movimentos que estão na FLAN.
A consulta retorna somente os dados da TMOV.
SELECT
FLAN.IDMOV,
FCFO.NOME,
FLAN.VALORORIGINAL - FLAN.VALORBAIXADO AS VALOR,
FLAN.DATAVENCIMENTO,
FLAN.NUMERODOCUMENTO,
FLAN.CODTB2FLX,
(SELECT DISTINCT TMOV.PLACA),
(SELECT DISTINCT TTRA.NOME)
FROM FCFO, FLAN,TMOV, TTRA
WHERE FLAN.CODCOLIGADA = FCFO.CODCOLIGADA AND
FLAN.CODCFO=FCFO.CODCFO AND
TMOV.CODCOLIGADA=FLAN.CODCOLIGADA AND
TMOV.IDMOV=FLAN.IDMOV AND
TTRA.CODTRA=TMOV.CODTRA AND
TTRA.CODCOLIGADA=TMOV.CODCOLIGADA AND
FLAN.CODTB2FLX >= '0053' AND FLAN.CODTB2FLX <= '0060' AND
FLAN.STATUSLAN <> '1' AND
FLAN.STATUSLAN <> '2' AND
FLAN.STATUSLAN <> '3' AND
FLAN.NFOUDUP <> '1'
Respostas
-
Deleted
- Marcado como Resposta Handerson Xavier quarta-feira, 26 de julho de 2017 14:18
quarta-feira, 26 de julho de 2017 13:49
Todas as Respostas
-
Handerson,
tente isso primeiro e veja se retornará os dados de FLAN que vc espera. Isso pode validar que sua cláusula where não está limitando seus dados.
SELECT FLAN.IDMOV, FCFO.NOME, FLAN.VALORORIGINAL - FLAN.VALORBAIXADO AS VALOR, FLAN.DATAVENCIMENTO, FLAN.NUMERODOCUMENTO, FLAN.CODTB2FLX FROM FCFO inner join FLAN on FLAN.CODCOLIGADA = FCFO.CODCOLIGADA AND FLAN.CODCFO = FCFO.CODCFO WHERE FLAN.CODTB2FLX >= '0053' AND FLAN.CODTB2FLX <= '0060' AND FLAN.STATUSLAN <> '1' AND FLAN.STATUSLAN <> '2' AND FLAN.STATUSLAN <> '3' AND FLAN.NFOUDUP <> '1'
Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)
- Editado Vinicius_Fonseca quarta-feira, 26 de julho de 2017 13:24
-
Bom dia,
Não consegui entender o fato de você dizer que a sua query retornou somente dados da TMOV, mas experimente fazer uns testes com essa versão da sua query com Join na sintaxe, e se a mesma não retornar nenhuma linha, experimente remover os filtros da clausula Where para ver o que acontece.
SELECT FLAN.IDMOV, FCFO.NOME, FLAN.VALORORIGINAL - FLAN.VALORBAIXADO AS VALOR, FLAN.DATAVENCIMENTO, FLAN.NUMERODOCUMENTO, FLAN.CODTB2FLX, TMOV.PLACA, TTRA.NOME FROM FLAN INNER JOIN TMOV ON TMOV.CODCOLIGADA = FLAN.CODCOLIGADA AND TMOV.IDMOV = FLAN.IDMOV INNER JOIN TTRA ON TTRA.CODTRA = TMOV.CODTRA AND TTRA.CODCOLIGADA = TMOV.CODCOLIGADA INNER JOIN FCFO ON FCFO.CODCOLIGADA = FLAN.CODCOLIGADA AND FCFO.CODCFO = FLAN.CODCFO WHERE FLAN.CODTB2FLX >= '0053' AND FLAN.CODTB2FLX <= '0060' AND FLAN.STATUSLAN <> '1' AND FLAN.STATUSLAN <> '2' AND FLAN.STATUSLAN <> '3' AND FLAN.NFOUDUP <> '1'
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
-
Vinícius bom dia.
Ok, a consulta retornou todos os dados.
Agora preciso colocar os campos da tabela TTRA.
TTRA.NOME
Em meus testes, quando busco a tabela TTRA, ela me mostra somente os registros que tem o campo TTRA.NOME, que foram inseridos na tabela TMOV.
Os registros da FLAN, quem não tem o campo TTRA.NOME não aparecem.
Obrigado.
-
Tentar explicar.
Tenho notas fiscais que são lançadas na TMOV, que geram financeiro FLAN.
Mas tenho registros que foram lançados direto no financeiro FLAN.
A tabela FLAN, não existe os campos TMOV.PLACA e TTRA.NOME.
Sua consulta, como a minha, só retorna os dados que estão inseridos na TMOV (NOTAS FISCAIS)
Não são mostrados os dados da FLAN (FINANCEIRO), que não tem os campos TMOV.PLACA E TTRA.NOME
Obrigado!
-
Bom dia José Diz!
Obrigado.
Na TMOV, são registradas as notas fiscais que geram lançamentos financeiros FLAN.
Na TMOV os campos TMOV.PLACA e TTRA.NOME são obrigatórios.
Porém tenho registros que foram inseridos direto no FINANCEIRO (FLAN). que não tem os campos TMOV.PLACA e TTRA.NOME.
Obrigado.
-
Vinícius bom dia.
Ok, a consulta retornou todos os dados.
Agora preciso colocar os campos da tabela TTRA.
TTRA.NOME
Em meus testes, quando busco a tabela TTRA, ela me mostra somente os registros que tem o campo TTRA.NOME, que foram inseridos na tabela TMOV.
Os registros da FLAN, quem não tem o campo TTRA.NOME não aparecem.
Obrigado.
Handerson,
veja se isso atende.
SELECT FLAN.IDMOV, FCFO.NOME, FLAN.VALORORIGINAL - FLAN.VALORBAIXADO AS VALOR, FLAN.DATAVENCIMENTO, FLAN.NUMERODOCUMENTO, FLAN.CODTB2FLX , (SELECT DISTINCT TMOV.PLACA), (SELECT DISTINCT TTRA.NOME) FROM FCFO inner join FLAN on FLAN.CODCOLIGADA = FCFO.CODCOLIGADA AND FLAN.CODCFO = FCFO.CODCFO left join TMOV on TMOV.CODCOLIGADA = FLAN.CODCOLIGADA AND TMOV.IDMOV = FLAN.IDMOV left join TTRA on TTRA.CODTRA = TMOV.CODTRA AND TTRA.CODCOLIGADA = TMOV.CODCOLIGADA WHERE FLAN.CODTB2FLX >= '0053' AND FLAN.CODTB2FLX <= '0060' AND FLAN.STATUSLAN <> '1' AND FLAN.STATUSLAN <> '2' AND FLAN.STATUSLAN <> '3' AND FLAN.NFOUDUP <> '1'
Vinicius Fonseca - MCP | MCTS | MCDBA | MCITP | MCTS | MCT | ITIL Foundation - DGA SISTEMAS - Se minha resposta for útil, classifique-a. :)