Usuário com melhor resposta
relacionar duas tabelas - update set

Pergunta
-
Eu tenho duas tabelas,
tabela1 e tabela2. / int N~ nulo
não tem ID
Na tabela1 (SOMENTE UM REGISTRO)
N1 N2 N3 N4 N5
1 2 0 4 0
Eu quero fazer um update/SET na Tabela2, buscando da tabela1.
Tabela2 (vários registros)
N1 N2 N3 N4 N5 valor
1 0 3 4 5 2 (valorde outra consulta)
1 2 0 0 5 3 (valorde outra consulta)
1 2 0 4 5 4 idem
0 2 3 4 0 0 idem
1 2 3 0 5 1 idem
A intenção e zerar o campo Valor da tabela2
update tabela2 set valor=0
Resultado esperado......
em seguida atualizar, algo parecido com o que segue:
E a tabela2 ficaria assim:
N1 N2 N3 N4 N5 valor
1 0 3 4 5 2
1 2 0 0 5 2
1 2 0 4 5 3
0 2 3 4 0 2
1 2 3 0 5 2
Para quem esta iniciando até perguntar é difícil.
Agradeço antecipadamente aos amigos pela atenção.
Fernando Fornarolo
Respostas
-
......
Fiz algumas alterações após várias tentativas,
case when t2.N1 = T1.NI AND T2.NI then 1 else 0 end +
idem ....
Aparentemente deu certo, vou confirmar na caneta.
obrigado pela dica,isto é, pela aula.
Fernando Fornarolo
- Marcado como Resposta Forna2015 domingo, 2 de agosto de 2015 12:30
Todas as Respostas
-
Olá Fernando,
Tudo bem?
Em qual ponto do seu projeto você está tendo dificuldade? Poderia postar o trecho de código com o qual está tendo algum tipo de dificuldade?
Atenciosamente
Marcos Roberto de Souza Junior
Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Boa tarde,
Relacionar duas tabelas, se não tivesse que recorrer da tabela1, faria assim e funciona bem:
UPDATE tabela2 SET valor =valor+1 WHERE N1=1
UPDATE tabela2 SET valor =valor+1 WHERE N4=4
UPDATE tabela2 SET valor =valor+1 WHERE N5=5
UPDATE tabela2 SET valor =valor+1 WHERE N8=8
UPDATE tabela2 SET valor=valor+1 WHERE N9=9
UPDATE tabela2 SET valor=valor+1 WHERE N10=10obrigado
-
Boa noite,
Não sei se entendi corretamente a sua questão, mas se você quer somar 1 "ponto" se a coluna da Tabela2 tem o mesmo valor na mesma coluna da Tabela1 experimente mais ou menos dessa forma:
with CTE_Soma as ( select t2.*, case when t2.N1 = t1.N1 then 1 else 0 end + case when t2.N2 = t1.N2 then 1 else 0 end + case when t2.N3 = t1.N3 then 1 else 0 end + case when t2.N4 = t1.N4 then 1 else 0 end + case when t2.N5 = t1.N5 then 1 else 0 end as ValorCalc from Tabela2 as t2 cross join Tabela1 as t1 ) update CTE_Soma set Valor = ValorCalc
Se não for isso, acho melhor você tentar explicar como deve ser calculado o valor a ser gravado na coluna Valor.
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
-
Bom dia, parece que funciona ...
Quando fiz as substituições nas minhas tabelas deve ter invertido tabela2 por tabela1,pois, a somatória do valor ficou na outra tabela. Vou inverter os nomes das tabelas, deve resolver.
Ainda tem um problema, eu quero a somatória somente dos valores positivos, isto é, quando ambos forem 0 eu não quero acumular na somatória.
Como proceder?
+ uma vez obrigado pela atenção.
Fernando Fornarolo
-
......
Fiz algumas alterações após várias tentativas,
case when t2.N1 = T1.NI AND T2.NI then 1 else 0 end +
idem ....
Aparentemente deu certo, vou confirmar na caneta.
obrigado pela dica,isto é, pela aula.
Fernando Fornarolo
- Marcado como Resposta Forna2015 domingo, 2 de agosto de 2015 12:30
-
O comando que sugeri deveria atualizar a Tabela2, que foi o que eu tinha entendido.
Sobre os números positivos, experimente mais ou menos dessa forma:
case when t2.N1 > 0 and t2.N1 = t1.N1 then 1 else 0 end +
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br