Array
(
)

QUERY CONSULTA EM 2 TABELAS

Luiz Souzaos
   - 26 nov 2013

Amigos, poderiam me ajudar no seguinte cenário.
Tenho 2 bases de dados - Base1 e Base2, com as tabelas Table1 e Table2. imagem link http://imageshack.com/a/img600/5315/nziw.png

Gostaria de saber como posso fazer para inserir na Table2 uma consulta feita na Table1
Table1 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 http://imageshack.com/a/img607/1165/t3h7.png
Na tabela 2 Table2 eu tenho 2 colunas, CONCATENADO_ABC que é igual ao da Table1 e TOTAL A PRAZO, que seria o (VALOR DA PARCELA * TOTAL DA PARCELA) que se encontra na Table1. Como mostra a imagem. http://imageshack.com/a/img842/1355/tijm.png
Enfim, como posso montar uma query que traga para a Table2 na coluna TOTAL A PRAZO os valores do total parcelado.
Desde já agradecido pela ajuda.

Isaac Jose
   - 27 nov 2013

amigo vc consegue fazer de algumas formas...
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

Isaac Jose
   - 27 nov 2013

Bom dia segue o codigo..
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

Luiz Souzaos
   - 27 nov 2013

Issac bom dia. Desculpe a demora em retornar.

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 ( http://imageshack.com/a/img600/5315/nziw.png )

A estrutura da Tabela1 e Tabela2 ( http://imageshack.com/a/img11/7762/7gn7.png )

Issac, desde já agradecido pela ajuda.

Isaac Jose
   - 27 nov 2013

nao consigo ver aqui no trabalho...
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

Isaac Jose
   - 27 nov 2013

sua conta esta errada.. o valor pago é de 270 e na tabela esta de 240..
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'

Isaac Jose
   - 27 nov 2013


Citação:
Bom dia segue o codigo..
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

Luiz Souzaos
   - 27 nov 2013

Isaac,

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'

Isaac Jose
   - 27 nov 2013

cara esqueci que ele nao deixa fazer com agregação...
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

Luiz Souzaos
   - 27 nov 2013

Isaac,

Funcionou perfeitamente.. Muito obrigado pela ajuda e atenção.

Abraço!!!

Isaac Jose
   - 27 nov 2013

por nada...
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

Luiz Souzaos
   - 28 nov 2013

Muito obrigado pelas dicas, estou começando agora a aprender o sql, e essas dicas são muito valiosas.
Teria algum curso online ou site que me indica para estudar?

Abraço!

Isaac Jose
   - 28 nov 2013

Cara gratuitas acho q tem no youtube...
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