Update entre duas tabelas sem sucesso.
Bom dia,
Estou tentando fazer um Update entre duas tabelas do mesmo banco de dados (firebird).
Estou usando esse comando:
Porém eu executo a instrução sem erro e fica até um tempo executando mais quando vou nas minhas tabelas não aconteceu nada.
Esse comando eu executo pelo sistema e pelo IBEXPERT.
Alguém tem idéia?
Estou tentando fazer um Update entre duas tabelas do mesmo banco de dados (firebird).
Estou usando esse comando:
UPDATE PRODUTONOVO A SET A.descricao = (SELECT B.descricao FROM PRODUTO B WHERE B.codprod = A.codprod )
Porém eu executo a instrução sem erro e fica até um tempo executando mais quando vou nas minhas tabelas não aconteceu nada.
Esse comando eu executo pelo sistema e pelo IBEXPERT.
Alguém tem idéia?
Osiel Gomes
Curtidas 0
Respostas
Fabiano Carvalho
17/09/2013
UPDATE A SET A.descricao = B.descricao FROM PRODUTONOVO as A INNER JOIN PRODUTO B ON B.codprod = A.codprod
GOSTEI 0
Osiel Gomes
17/09/2013
UPDATE A SET A.descricao = B.descricao FROM PRODUTONOVO as A INNER JOIN PRODUTO B ON B.codprod = A.codprod
Dá erro no FROM.
GOSTEI 0
Rafael Brendolan
17/09/2013
UPDATE A SET A.descricao = B.descricao FROM PRODUTONOVO A INNER JOIN PRODUTO B ON B.codprod = A.codprod
GOSTEI 0
Osiel Gomes
17/09/2013
UPDATE A SET A.descricao = B.descricao FROM PRODUTONOVO A INNER JOIN PRODUTO B ON B.codprod = A.codprod
Não entendi o que mudou no comando mais de qualquer forma eu testei e o erro é o mesmo.
Valeu
GOSTEI 0
Fabiano Carvalho
17/09/2013
Como assim?
Voce executa ele onde? Na aplicação ou direto no banco?
Voce executa ele onde? Na aplicação ou direto no banco?
GOSTEI 0
Osiel Gomes
17/09/2013
Como assim?
Voce executa ele onde? Na aplicação ou direto no banco?
Voce executa ele onde? Na aplicação ou direto no banco?
Direto no banco, pelo IBEXPERT.
GOSTEI 0
Fabiano Carvalho
17/09/2013
essas tabelas realmente tem referencias?
Execute o comando abaixo, e veja se retorna alguma linha
Execute o comando abaixo, e veja se retorna alguma linha
SELECT A.* FROM PRODUTONOVO as A LEFT JOIN PRODUTO B ON A.codprod = B.codprod WHERE B.codprod IS NULL
GOSTEI 0
Osiel Gomes
17/09/2013
essas tabelas realmente tem referencias?
Execute o comando abaixo, e veja se retorna alguma linha
Execute o comando abaixo, e veja se retorna alguma linha
SELECT A.* FROM PRODUTONOVO as A LEFT JOIN PRODUTO B ON A.codprod = B.codprod WHERE B.codprod IS NULL
Sim retorno com informações...
As tabelas não tem um ligação uma com a outra pois só criei essa tabela PRODUTONOVO para retirar os dados dela, pois as informações da outra esta com problemas
GOSTEI 0
Fabiano Carvalho
17/09/2013
Voce quer tirar de uma e passar pra outra, então é INSERT...SELECT e não update..
Explique exatamente o que voce precisa...
Explique exatamente o que voce precisa...
GOSTEI 0
Osiel Gomes
17/09/2013
Voce quer tirar de uma e passar pra outra, então é INSERT...SELECT e não update..
Explique exatamente o que voce precisa...
Explique exatamente o que voce precisa...
Eu tenho uma tabela chamada PRODUTONOVO que esta com as informações correta na realidade só quero a descrição dessa tabela e jogar na tabela PRODUTO sendo que PRODUTO E PRODUTONOVO tem os mesmos campos e registros só que na tabela PRODUTONOVO o campo descrição esta do jeito que eu quero, então comparo os mesmo código entre as duas e só pego a descrição e jogo na outra através de update.
Não posso inserir por que as duas já estão com os registros.
Entendeu?
GOSTEI 0
Osiel Gomes
17/09/2013
Alguma outra sugestão dos colegas?
GOSTEI 0
Fabiano Carvalho
17/09/2013
Veja se retorna registros isso..
Naquela outra consulta retorno, porque existe registros na tabela produtonovo que não estão na tabela produto...
Se essa consulta nao retornar nada, é porque tem algo errado, e os registros não se coincidem
Naquela outra consulta retorno, porque existe registros na tabela produtonovo que não estão na tabela produto...
SELECT A.* FROM PRODUTONOVO as A INNER JOIN PRODUTO B ON A.codprod = B.codprod
Se essa consulta nao retornar nada, é porque tem algo errado, e os registros não se coincidem
GOSTEI 0
Deivison Melo
17/09/2013
Dá uma olhada no post abaixo:
[url]https://www.devmedia.com.br/uso-de-joins-em-instrucoes-update-e-delete-parte-02/9464[/url]
Abração e bons códigos!
[url]https://www.devmedia.com.br/uso-de-joins-em-instrucoes-update-e-delete-parte-02/9464[/url]
Abração e bons códigos!
GOSTEI 0
Deivison Melo
17/09/2013
Retificando:
Dá uma olhada nos posts abaixo:
Primeira parte
[url]https://www.devmedia.com.br/uso-de-joins-em-instrucoes-update-e-delete-parte-01/9444[/url]
Segunda parte
[url]https://www.devmedia.com.br/uso-de-joins-em-instrucoes-update-e-delete-parte-02/9464[/url]
Abração e bons códigos!
Dá uma olhada nos posts abaixo:
Primeira parte
[url]https://www.devmedia.com.br/uso-de-joins-em-instrucoes-update-e-delete-parte-01/9444[/url]
Segunda parte
[url]https://www.devmedia.com.br/uso-de-joins-em-instrucoes-update-e-delete-parte-02/9464[/url]
Abração e bons códigos!
GOSTEI 0
Osiel Gomes
17/09/2013
Veja se retorna registros isso..
Naquela outra consulta retorno, porque existe registros na tabela produtonovo que não estão na tabela produto...
Se essa consulta nao retornar nada, é porque tem algo errado, e os registros não se coincidem
Naquela outra consulta retorno, porque existe registros na tabela produtonovo que não estão na tabela produto...
SELECT A.* FROM PRODUTONOVO as A INNER JOIN PRODUTO B ON A.codprod = B.codprod
Se essa consulta nao retornar nada, é porque tem algo errado, e os registros não se coincidem
Retorna centenas de registros.
GOSTEI 0
Deivison Melo
17/09/2013
se seu select for o aqui abaixo:
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
Kd a restrição?
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
where A.codprod = codigo_qualquer // que seria o q vc quer atualizar realmente!
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
Kd a restrição?
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
where A.codprod = codigo_qualquer // que seria o q vc quer atualizar realmente!
GOSTEI 0
Fabiano Carvalho
17/09/2013
se seu select for o aqui abaixo:
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
Kd a restrição?
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
where A.codprod = codigo_qualquer // que seria o q vc quer atualizar realmente!
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
Kd a restrição?
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
where A.codprod = codigo_qualquer // que seria o q vc quer atualizar realmente!
Boa ideia! Autor, faça isso:
SELECT A.*
FROM PRODUTONOVO as A
INNER JOIN PRODUTO B
ON A.codprod = B.codprod
where A.descricao <> b.descricao
Se não mostrar nada, é porque os dados já estão atualizados
GOSTEI 0