none
Ajuda com Join RRS feed

  • Pergunta

  •    Galera, estou com uma dificuldade... estou com um relatório que não retorna os dados corretos, devido a falta de informação por causa de um left join.

      São quatro campos na tab Cad_cheque...

    SELECT distinct * FROM ASO_PROC_ENVIO_DOCTO AS A
    LEFT JOIN CAD_CHEQUE_AGRUPADO AS B
    ON   A.num_seq_envio_documento = B.num_seq_envio_docto 
    WHERE  A.COD_USUARIO_INCLUSAO = xx  AND A.NUM_SEQ_PROCESSO_VENDA = xx

      Eu consigo listar todos os parâmetros, exceto os:

    cod_banco cod_banco_depositar num_cheque num_agencia
    NULL                        NULL                        NULL           NULL  

    E já confirmei na outra tabela que estes campos possuem valor. E o código é muito antigo, tinha que encontrar o erro (e encontrei) agora preciso ajustá-lo... Alguém já viu isso?

    quinta-feira, 25 de setembro de 2014 19:24

Respostas

Todas as Respostas

  • Ares,

    Esta retornando NULL porque "B.num_seq_envio_docto " da sua tabela "CAD_CHEQUE_AGRUPADO" não existe na tabela "ASO_PROC_ENVIO_DOCTO".


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    quinta-feira, 25 de setembro de 2014 19:33
  • Na verdade isto é parte de uma procedure imensa (e bem antiga) de preferência não queria mudar mt ela, pois a estrutura do sistema todo é instável... Existe alguma maneira de remediar este erro?
    quinta-feira, 25 de setembro de 2014 19:39
  • E com Right Join tbm não adianta.
    quinta-feira, 25 de setembro de 2014 19:39
  • Na verdade isto é parte de uma procedure imensa (e bem antiga) de preferência não queria mudar mt ela, pois a estrutura do sistema todo é instável... Existe alguma maneira de remediar este erro?

    Se você trocar o "left join" por "inner join" irá mostrar somente os registros que tiverem nas duas tabelas, mas tem que saber se é isso que você quer...


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    quinta-feira, 25 de setembro de 2014 19:49
  • Não, o inner join não vai trazer os resultados que quero... 
    quinta-feira, 25 de setembro de 2014 20:08
  • Ares,

    Qual o resultado que você quer ?

    Você tem registros na tabela A que não tem na tabela B, se usar o "left join" ira mostrar todos os registros da tabela A e os registros da tabela B que não existem na tabela A irão aparecer como NULL.

    Se user o "inner join" ira mostrar somente os registros que estão nas duas tabelas.


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    quinta-feira, 25 de setembro de 2014 20:42
  • Deleted
    quinta-feira, 25 de setembro de 2014 21:19
  • Ares,

    Tenta formatar os campos na cláusula where conforme os comandos a seguir.


    Se for string (varchar) tente:

    rtrim(ltrim(num_cheque num_agencia)) = '121'
    se for numérico, tente:


    cast(num_cheque num_agencia as int) = 121




    • Sugerido como Resposta paulohpatricio quinta-feira, 25 de setembro de 2014 22:30
    quinta-feira, 25 de setembro de 2014 22:11
  •   José, postei apenas parte da proc. Eu preciso do distinct...  Paulohpatricio, infelizmente não deu resultado...
    sexta-feira, 26 de setembro de 2014 11:51
  •   Pessoal, numa conversa com a equipe decidimos não modificar este detalhe, então agradeço à todos pela atenção e força.
    sexta-feira, 26 de setembro de 2014 14:13