none
Update Tabela 1 ( selecionando dado de outra tabela ) Tabela ( Entidades iguais) RRS feed

  • Pergunta

  •  

    Update e075pro

    set codend =

     (select codend from e210est where e0210est.codemp = e075pro.codemp and e0210est.codpro =    e075pro.codpro  and e075pro.codemp = 1 and e075pro.codpro = '0100100044')

    Estou atualizando campo "codend" entidade pertinente da tabela e075pro.coden pela tabela (2) e210est que também tem a mesma entidade "codend"

    Apresenta erro sintax

    Multi-part  identifier "e210est.codemp" could not be Bound (Não pode ser vinculado)

    Sendo e210est.codemp codigo empresa chave identico a E075pro.codemp

    Importante utilizando SQL 2008 pela ferramenta DBexplorer 

    Estou errando onde ?

    terça-feira, 30 de abril de 2013 18:08

Respostas

  • Elias, na verdade acho que o erro é simples, o seu select abaixo tem que retornar somente 1 resultado por que senão o sql não vai saber o que atribuir para o campo da sua tabela, rode somente o seu select e veja se retorna mais de 1 linha se retornar ai esta o erro, deve retornar somente 1 registro para o sql aceitar o update.

    select codend from e210est
      where e210est.codemp = e075pro.codemp
      and   e210est.codpro = e075pro.codpro
      and e075pro.codemp = 1
      and e075pro.codpro = '0100100044'


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Neto, Elias M S terça-feira, 30 de abril de 2013 20:04
    terça-feira, 30 de abril de 2013 19:38

Todas as Respostas

  • Olá,

    Parece que te falta um zero:

    Update e075pro set codend = (select codend from e0210est -- Faltava um zero aqui, no nome da tabela !

    where e0210est.codemp = e075pro.codemp and e0210est.codpro = e075pro.codpro and e075pro.codemp = 1 and e075pro.codpro = '0100100044')


    Espero ter ajudadio


    Please use Mark as Answer if my post solved your problem and use Vote As Helpful if a post was useful.

    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    terça-feira, 30 de abril de 2013 18:22
  • na realidade os nomes das tabelas estavam erradas já ajustei nomes entretanto não entendo o porque do erro na expressão:

    Update e075pro
    set codend =
    (select codend from e210est
     where e210est.codemp = e075pro.codemp
     and   e210est.codpro = e075pro.codpro
     and e075pro.codemp = 1
     and e075pro.codpro = '0100100044')

    Sitax error: Subquery returned more than value this is not permitted when the subquery fallows = !=,<,<=, > = or when the subquery is used as an expression.

    " um simples update " onde esta erro de comparações ? alguem tem outros olhos.

    Agradeço

    terça-feira, 30 de abril de 2013 19:29
  • Elias, na verdade acho que o erro é simples, o seu select abaixo tem que retornar somente 1 resultado por que senão o sql não vai saber o que atribuir para o campo da sua tabela, rode somente o seu select e veja se retorna mais de 1 linha se retornar ai esta o erro, deve retornar somente 1 registro para o sql aceitar o update.

    select codend from e210est
      where e210est.codemp = e075pro.codemp
      and   e210est.codpro = e075pro.codpro
      and e075pro.codemp = 1
      and e075pro.codpro = '0100100044'


    Alexandre Matayosi Conde Mauricio.

    • Marcado como Resposta Neto, Elias M S terça-feira, 30 de abril de 2013 20:04
    terça-feira, 30 de abril de 2013 19:38
  • Achei erro pessoal:

    Desculpa falha minha tem mais uma chave update fica assim:

    Certo:

    Alexandre Matayosi Conde Mauricio

     update e075pro
         set e075pro.codend = e210est.codend
         from e075pro as e075pro
         inner join e210est as e210est on e210est.codemp = e075pro.codemp
         and e210est.codpro = e075pro.codpro
         and e210est.coddep = '1' ------------------->>>> Estava faltando este teste, pois aqui posso ter mais de um                                                                                       codigo de deposito
         and e075pro.codemp = 1
         and e075pro.codpro = '01001000

    terça-feira, 30 de abril de 2013 20:04