ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Update

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rogerioclaro2
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 17 de Outubro de 2013
Mensagens: 342

MensagemEnviada: Qua Mai 16, 2018 11:27 am    Assunto: Update Responder com Citação

Pessoal, bom dia.

preciso realizar um update com a seguinte logica:


Código:

UPDATE
    Tabela
SET
    Tabela.Col01 = Outra_tabela.Col01,
    Tabela.Col02 = Outra_tabela.Col02
FROM
    Tabela as Tabela
  INNER JOIN Outra_tabela AS Outra_tabela
    ON Tabela.id = Outra_tabela.id
WHERE
    Condicao = 'Qualquer coisa'


porém ele da erro, alguem tem alguma ideia de como posso fazer isso?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 10852

MensagemEnviada: Qua Mai 16, 2018 2:53 pm    Assunto: Responder com Citação

Boa tarde,

Se você estiver utilizando o Firebird acho que a alternativa vai ser utilizar subquerys, sendo necessário utilizar uma para cada campo a ser atualizado. Ex:

Código:
UPDATE Tabela as t
SET
    t.Col01 = (select o.Col01 from Outra_tabela as o where o.id = t.id)
    t.Col02 = (select o.Col02 from Outra_tabela as o where o.id = t.id)
WHERE
    t.Condicao = 'Qualquer coisa'


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-residencial-sobrado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
rogerioclaro2
Membro Junior
Membro Junior


Registrado: Quinta-Feira, 17 de Outubro de 2013
Mensagens: 342

MensagemEnviada: Ter Mai 22, 2018 10:39 am    Assunto: Responder com Citação

imex escreveu:
Boa tarde,

Se você estiver utilizando o Firebird acho que a alternativa vai ser utilizar subquerys, sendo necessário utilizar uma para cada campo a ser atualizado. Ex:

Código:
UPDATE Tabela as t
SET
    t.Col01 = (select o.Col01 from Outra_tabela as o where o.id = t.id)
    t.Col02 = (select o.Col02 from Outra_tabela as o where o.id = t.id)
WHERE
    t.Condicao = 'Qualquer coisa'


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-residencial-sobrado



olá imex, desculpa pela demora, fiz o teste mas esta retornando essa mensagem:


multiple rows in singleton select.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 10852

MensagemEnviada: Ter Mai 22, 2018 11:22 am    Assunto: Responder com Citação

Esse erro deve estar ocorrendo porque a subquery está retornando mais de um registro, então se for possível você poderia adicionar mais filtros nas subquerys para que elas retornem somente um registro, ou se isso não for possível experimente adicionar o First nas subquerys:

Código:
UPDATE Tabela as t
SET
    t.Col01 = (select first 1 o.Col01 from Outra_tabela as o where o.id = t.id)
    t.Col02 = (select frist 1 o.Col02 from Outra_tabela as o where o.id = t.id)
WHERE
    t.Condicao = 'Qualquer coisa'


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB