QUERY CONSULTA EM 2 TABELAS
Amigos, poderiam me ajudar no seguinte cenário.
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.
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
Curtidas 0
Respostas
Isaac Jose
26/11/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
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
GOSTEI 0
Isaac Jose
26/11/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
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
GOSTEI 0
Luiz Souzaos
26/11/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 ( [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.
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.
GOSTEI 0
Isaac Jose
26/11/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
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
GOSTEI 0
Isaac Jose
26/11/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'
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'
GOSTEI 0
Isaac Jose
26/11/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
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
GOSTEI 0
Luiz Souzaos
26/11/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'
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'
GOSTEI 0
Isaac Jose
26/11/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
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
GOSTEI 0
Luiz Souzaos
26/11/2013
Isaac,
Funcionou perfeitamente.. Muito obrigado pela ajuda e atenção.
Abraço!!!
Funcionou perfeitamente.. Muito obrigado pela ajuda e atenção.
Abraço!!!
GOSTEI 0
Isaac Jose
26/11/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
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
GOSTEI 0
Luiz Souzaos
26/11/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!
Teria algum curso online ou site que me indica para estudar?
Abraço!
GOSTEI 0
Isaac Jose
26/11/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
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
GOSTEI 0