QUERY CONSULTA EM 2 TABELAS
26/11/2013
0
Tenho 2 bases de dados - Base1 e Base2, com as tabelas Table1 e Table2. imagem link [url]http://imageshack.com/a/img600/5315/nziw.png[/url]
Gostaria de saber como posso fazer para inserir na [b]Table2[/b] uma consulta feita na [b]Table1[/b]
[b]Table1[/b] Contém as seguintes colunas (CONCATENADO_ABC, CIDADE, BAIRRO, CPF, VALOR DA PARCELA, TOTAL PARCELA) Na Coluna CONCATENADO_ABC, se econtra concatenado as campos das colunas CIDADE, BAIRRO E CPF. conforme podem ver na imagem [url]http://imageshack.com/a/img607/1165/t3h7.png[/url]
Na tabela 2 [b]Table2[/b] eu tenho 2 colunas, CONCATENADO_ABC que é igual ao da [b]Table1[/b] e TOTAL A PRAZO, que seria o (VALOR DA PARCELA * TOTAL DA PARCELA) que se encontra na [b]Table1[/b]. Como mostra a imagem. [url]http://imageshack.com/a/img842/1355/tijm.png[/url]
Enfim, como posso montar uma query que traga para a [b]Table2[/b] na coluna TOTAL A PRAZO os valores do total parcelado.
Desde já agradecido pela ajuda.
Luiz Souzaos
Posts
27/11/2013
Isaac Jose
com update;;;;;
e com insert..
com insert faça primeiro a consolidação do favor em uma tabela ... tmp que seja...
depois faca insert into campos tb1 mais os valores recebidos da tb 2....
esta tarde já estou com sono não consigo explicar melhor...
duvidas e so postar e amanha respondo....
ops mais tarde kkk
27/11/2013
Isaac Jose
espero que funcione..
--INICIA A TRANSAÇÃO
BEGIN TRAN
update table2
set totalaPrazo = (table1.valorDaParcela * table1.TotalDaParcela)
from table2
inner join table1
on table2.concatenado_abc = table1.concatenado_abc
--CASO FUNIONE UTILIZE O CODIGO ABAIXO
COMMIT
--CASO AO CONTRARIO
ROLLBACK
att
Isaac
27/11/2013
Luiz Souzaos
Aqui o código funcionou parcialmente, pegou apenas o calculo do primeiro campo, mas acho também que não expliquei muito bem minha dúvida.
Vou postar as imagens que fiz, que fica melhor que qualquer explicação. rs
Neste caso como poderia ter na coluna VALOR JÁ PAGO o total geral que o cliente já pagou?
Estrutura da Minha base, as tabelas estão em bases diferentes ( [url]http://imageshack.com/a/img600/5315/nziw.png[/url] )
A estrutura da Tabela1 e Tabela2 ( [url]http://imageshack.com/a/img11/7762/7gn7.png[/url] )
Issac, desde já agradecido pela ajuda.
27/11/2013
Isaac Jose
vc quer dizer que os bancos sao diferentes??
case seja isso.
insira na consulta...
base1.tabela1.campo
base2.tabela2.campo
e assim por diante no almoço consigo verificar melhor.
abraços
27/11/2013
Isaac Jose
no código que eu te enviei coloque
coloque no final
where base1.table1.valorjapago = 'pagou e no set coloque..
set campo = sum(campo2)
acho que deve funcionar'
27/11/2013
Isaac Jose
espero que funcione..
--INICIA A TRANSAÇÃO
BEGIN TRAN
update table2
set totalaPrazo = (table1.valorDaParcela * table1.TotalDaParcela)
from table2
inner join table1
on table2.concatenado_abc = table1.concatenado_abc
--CASO FUNIONE UTILIZE O CODIGO ABAIXO
COMMIT
--CASO AO CONTRARIO
ROLLBACK
att
Isaac
--INICIA A TRANSAÇÃO
BEGIN TRAN
update base2.table2
set base2.table2.valorPago = sum(base.table1.totalcompral)
from base2.table2
inner join base1.table1
on base2.table2.concatenado_abc = base1.table1.concatenado_abc
--CASO FUNIONE UTILIZE O CODIGO ABAIXO
COMMIT
--CASO AO CONTRARIO
ROLLBACK
pronto amigo... deve funcionar...
duvidas e so falar
27/11/2013
Luiz Souzaos
Fiz da seguinte forma e não funcionou, estou tendo o erro
Msg 157, Level 15, State 1, Line 4
An aggregate may not appear in the set list of an UPDATE statement.
update table2
set totalaPrazo = SUM(BASE1.TABLE1.TOTAL_COMPRA)
FROM [table2]
INNER join BASE1.table1
on table2.concatenado_abc = table1.concatenado_abc
where base1.table1.[valor ja pago] = 'pagou'
27/11/2013
Isaac Jose
eu tenho um exemplo mais nao consigo testar agora... por hora parece estar certo..
UPDATE p
SET QtdContMes = t.QtdContDia
FROM table2 AS p INNER JOIN
(
SELECT
id,
SUM(QtdContDia) QtdContDia
FROM
table1
WHERE [condicao] = 1
GROUP BY id
) t
ON t.id = p.id
WHERE
p.condição = 1001
27/11/2013
Luiz Souzaos
Funcionou perfeitamente.. Muito obrigado pela ajuda e atenção.
Abraço!!!
27/11/2013
Isaac Jose
1 conselho...
estude a estrutura dos valores de campos para que você consiga entender como exemplo. a diferença entre vachar e nvarchar...
isso conta muito em ambientes de produção..
outra coisa o campo que vc esta comparando ex 'pagou'..
tente deixar esses campos de comparação como números para melhorar a performance juntamente com o tamanha ta tabela..
altere esse campo para status pagamento onde 1 significa que o pagamento foi efetuado e 0 que ele não foi efetuado por exemplo..
abraços e disponha
28/11/2013
Luiz Souzaos
Teria algum curso online ou site que me indica para estudar?
Abraço!
28/11/2013
Isaac Jose
são ótimas....
sql vc tem que ter ideia do que ira fazer os códigos com o básico vc consegue montar sua logica e agir .... a parte avançada e bem mais embaixo... e requer cálculos de performance
sobre registros*bases e tornar todas viáveis em questão de informação e velocidade.....
pesquise formação 2778,6231,6232,6234,6235,6236
abraços
Clique aqui para fazer login e interagir na Comunidade :)