none
Problema com Merge RRS feed

  • Pergunta

  • Olá amigos, como estão? Bem eu tenho um problema, e nao sei porque isto acontece.

     

    Ao fazer um join entre duas tabelas nao está a devolver o que queria na verdade, na verdade do quero que me devolva o que está na tabela da esquerda, mas antes vais comparar o ID com a outra, mas o que acontece é que depois de fazer o JOIN, neste caso INNER JOIN, ele devolve menos linhas, e eu nao queria que isto acontece-se na verdade. 

    Tambem se colocar o LEFT JOIN ele deixa passar todas as linhas mas depois dá erro ao carregar a tabela de factos. 

     

    O que devo usar antes desse MERGE JOIN?

    Mostro uma imagem:

    terça-feira, 17 de janeiro de 2012 18:19

Respostas

  • TheAkaBroken,

     

    Dados fantasmas são dados que você são inseridos em uma transação que, por exemplo, é cancelada.

    Imagine que no momento que você está efetuando seu select, eu estou inserindo dados na mesma tabela. Você irá ler meus dados certo!? No momento seguinte eu dou um rollback na minha inserção. Os dados que você leu não existem mais.

    Isso são dados fantasmas.

    Está relacionado com o nível de isolamento do SQL Server.

    Indico: http://pedrogalvaojunior.wordpress.com/tag/t-sql/

    Espero ter ajudado.

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
    quinta-feira, 19 de janeiro de 2012 21:09

Todas as Respostas

  • TheAkaBroken,

    Faça um teste, tende executar a mesma instrução Join diretamente no Management Studio para obter o resultado.

    Pode ser que existam dados fantasma na sua tabela de origem.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quarta-feira, 18 de janeiro de 2012 22:47
    Moderador
  • já o fiz Junior, mas devolve o mesmo resultado. o que quer dizer por dados fantasma?
    quinta-feira, 19 de janeiro de 2012 09:37
  • TheAkaBroken,

     

    Dados fantasmas são dados que você são inseridos em uma transação que, por exemplo, é cancelada.

    Imagine que no momento que você está efetuando seu select, eu estou inserindo dados na mesma tabela. Você irá ler meus dados certo!? No momento seguinte eu dou um rollback na minha inserção. Os dados que você leu não existem mais.

    Isso são dados fantasmas.

    Está relacionado com o nível de isolamento do SQL Server.

    Indico: http://pedrogalvaojunior.wordpress.com/tag/t-sql/

    Espero ter ajudado.

    []'s


    Mariana Del Nero /* Se a resposta foi útil, não esqueça de marcá-la */
    quinta-feira, 19 de janeiro de 2012 21:09
  • Pessoal,

     

    Estou com o mesmo problema alias até acabei abrindo um outro tópico.

    Quando eu faço o Inner Join direto no banco funciona certinho quando eu faço pelo SSIS ele leva menos registro do que deveria.

    sexta-feira, 20 de janeiro de 2012 00:50
  • bianconi,

    Na verdade o seu problema em relação ao TheAkaBroken tem alguma simularidade, talvez seja em relação a versão do SQL Server.

    Existe mais algum relacionamento que possa existir entre estas tabelas?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    domingo, 22 de janeiro de 2012 00:07
    Moderador