Jump to content
Fórum Script Brasil
  • 0

PROBLEMA COM UPDATE


tércio fernandes

Question

Seguinte pessoal to passando o seguinte comando

UPDATE produto  
SET cp.titulo=(Select ssop.nome_produto 
                FROM sso.produtos ssop 
                INNER JOIN comprouche1.produto cp ON
                   (ssop.codigo_produto_loja=cp.codigo_produto_loja) 
                WHERE ssop.codigo_produto_loja <> '')
WHERE usuario = 'loja@fcardoso-online.com.br'

e estou tendo o seguinte erro: You can't specify target table 'produto' for update in FROM clause

Explicanto melhor:

Meu problema é o seguinte, exportei dados de um banco chamado sso para outro chamado comprouche1, como fiz por script, quando passei os dados para meu banco eles vieram com caracteres "malucos"

então como os produtos já estão com movimentação não posso mais mexe-los.

então queria atualizar os nome dos produtos da minha base pelo nome dos produtos da base sso, pois os mesmo estão corretos, e fazendo por UPDATE não vai ter bronca.

Grato pela ajuda!

Edited by Denis Courcy
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0
Seguinte pessoal to passando o seguinte comando

UPDATE produto

SET cp.titulo=(Select ssop.nome_produto from sso.produtos ssop INNER JOIN com1.produto cp ON

(ssop.codigo_produto_loja=cp.codigo_produto_loja) where ssop.codigo_produto_loja <> '')

where usuario = 'loja@fcardoso-online.com.br'

e estou tendo o seguinte erro: You can't specify target table 'produto' for update in FROM clause

tenta jogar as alias corretamente... tá fazendo referência a cp.titulo sendo q cp é a tabela com1.produto dentro da select

Link to comment
Share on other sites

  • 0

já tentei de 2 maneiras

UPDATE comprouche1.produto cp

SET cp.titulo=

(SELECT ssop.nome_produto FROM sso.produtos ssop WHERE ssop.codigo_produto_loja=cp.codigo_produto_loja

and ssop.codigo_produto_loja <> ''

)

Ele me retorna Columm 'titulo' cannot be null

----------------------------------------------------

e:

UPDATE comprouche1.produto p

SET p.titulo=(Select ssop.nome_produto from sso.produtos ssop where ssop.codigo_produto_loja <> '' AND ssop.codigo_produto_loja=p.codigo_produto_loja)

where usuario = 'loja@fcardoso-online.com.br'

erro: Subquery returns more than 1 row

Vendo a sms do erro 1 resolvi dar o UPDATE direto pra retornar 1 linha somente. ele insere normalmente. mas o problema é qi são muitas linhas.

Alguma sujestao?

Seguinte pessoal to passando o seguinte comando

UPDATE produto

SET cp.titulo=(Select ssop.nome_produto from sso.produtos ssop INNER JOIN com1.produto cp ON

(ssop.codigo_produto_loja=cp.codigo_produto_loja) where ssop.codigo_produto_loja <> '')

where usuario = 'loja@fcardoso-online.com.br'

e estou tendo o seguinte erro: You can't specify target table 'produto' for update in FROM clause

tenta jogar as alias corretamente... tá fazendo referência a cp.titulo sendo q cp é a tabela com1.produto dentro da select

Nada Felipe =/

Link to comment
Share on other sites

  • 0

pelo que entendi você tem uma tabela chamada produtos no banco sso e uma outra tabela chamada produto no banco comprouche1, que foi duplicada da primeira tabela via código e isso fez com que os nomes ficassem diferentes.

Pelo que vi na sua pesquisa as duas tabelas tem um campo em comum chamado codigo_produto_loja...

montei mais ou menos esta estrutura de acordo com o q eu entendi

`comprouche1`.`produto` (

`codigo_produto_loja` INT NOT NULL AUTO_INCREMENT ,

`titulo` VARCHAR(45) NULL ,

PRIMARY KEY (`codigo_produto_loja`) );

`sso`.`produtos` (

`codigo_produto_loja` INT NOT NULL AUTO_INCREMENT ,

`nome_produto` VARCHAR(45) NULL ,

PRIMARY KEY (`codigo_produto_loja`) );

adicionei vários valores as duas e fiz o update da seguinte maneira

update comprouche1.produto cp

left join sso.produtos sso on cp.codigo_produto_loja = sso.codigo_produto_loja

set cp.titulo = sso.nome_produto

também tem a questão do where da primeira consulta q você tinha colocado where usuario = 'loja@fcardoso-online.com.br' mas ai é contigo...

espero ter ajudado

see you

Edited by Felipe Vacão
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...