none
CONSULTA SQL COM 3 TABELAS UMA SEM RELACIONAMENTO RRS feed

  • 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'
      

    quarta-feira, 26 de julho de 2017 12:57

Respostas

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. :)


    quarta-feira, 26 de julho de 2017 13:09
  • 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

    quarta-feira, 26 de julho de 2017 13:12
  • Deleted
    quarta-feira, 26 de julho de 2017 13:18
  • 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.

    quarta-feira, 26 de julho de 2017 13:37
  • 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!

    quarta-feira, 26 de julho de 2017 13:42
  • 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.

    quarta-feira, 26 de julho de 2017 13:45
  • Deleted
    • Marcado como Resposta Handerson Xavier quarta-feira, 26 de julho de 2017 14:18
    quarta-feira, 26 de julho de 2017 13:49
  • 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. :)

    quarta-feira, 26 de julho de 2017 14:00