Insert com 3 tabelas
Pessoal, tenho 3 tabelas:
Vendas, Mat_Vendas, Conta_Corrente
Preciso pegar os seguintes campos:
[b:d00ebf400f]Tabela Vendas[/b:d00ebf400f]
id_cliente
data_lancamento
tipo_pagamento
[b:d00ebf400f]Tabela Mat_Vendas[/b:d00ebf400f]
vl_lancamento
id_item
E jogar na tabela [b:d00ebf400f]Conta_Corrente[/b:d00ebf400f]
Qual é a melhor maneira de se fazer isso?
Obs: Queria que após incluir uma venda na tabela mat_vendas ele já pegasse estas informações e fizesse a inserção na tabela conta_corrente!
Como posso fazer isso?
Alguem pode me explicar?
Grato,
Ricieri.
Vendas, Mat_Vendas, Conta_Corrente
Preciso pegar os seguintes campos:
[b:d00ebf400f]Tabela Vendas[/b:d00ebf400f]
id_cliente
data_lancamento
tipo_pagamento
[b:d00ebf400f]Tabela Mat_Vendas[/b:d00ebf400f]
vl_lancamento
id_item
E jogar na tabela [b:d00ebf400f]Conta_Corrente[/b:d00ebf400f]
Qual é a melhor maneira de se fazer isso?
Obs: Queria que após incluir uma venda na tabela mat_vendas ele já pegasse estas informações e fizesse a inserção na tabela conta_corrente!
Como posso fazer isso?
Alguem pode me explicar?
Grato,
Ricieri.
Ricieri
Curtidas 0
Respostas
Ricieri
29/03/2006
Pessoal, estive pensando, e cheguei em uma conclusão:
to pensando em criar uma procedure e uma trigger after insert...
A procedure eu tava criando, mas não consegui sair disso..
alguem poderia me ajudar:
[b:d6849f8d2c]CREATE PROCEDURE ATUALIZAMOVIMENTO (
idencc INTEGER,
QUANTIDADE INTEGER)
AS
begin
insert into cc (vl_lancamento, data_lancamento, tipo_movimentacao, id_cliente, id_item)
values (:vl_total, :dt_venda, :id_tipo_pagto, :id_cliente, :id_item)
where id_cc = :idencc;
end[/b:d6849f8d2c]
Eu não sei muito o que fazer, por exemplo, eu não sei como passar os parametros e etc..
Alguem me ajuda.
valeu.
to pensando em criar uma procedure e uma trigger after insert...
A procedure eu tava criando, mas não consegui sair disso..
alguem poderia me ajudar:
[b:d6849f8d2c]CREATE PROCEDURE ATUALIZAMOVIMENTO (
idencc INTEGER,
QUANTIDADE INTEGER)
AS
begin
insert into cc (vl_lancamento, data_lancamento, tipo_movimentacao, id_cliente, id_item)
values (:vl_total, :dt_venda, :id_tipo_pagto, :id_cliente, :id_item)
where id_cc = :idencc;
end[/b:d6849f8d2c]
Eu não sei muito o que fazer, por exemplo, eu não sei como passar os parametros e etc..
Alguem me ajuda.
valeu.
GOSTEI 0
Thomaz_prg
29/03/2006
Amigo, não precisa de uma procedure e uma trigger. Apenas uma trigger resolveria seu caso. O Insert, você coloca na trigger para ser disparado após a inserção de um registro.
GOSTEI 0
Ricieri
29/03/2006
Tem como voce dar um exemplo?
Eu nao manjo :(
Eu nao manjo :(
GOSTEI 0
Renato.pavan
29/03/2006
Tem como voce dar um exemplo?
Eu nao manjo :(
Colega,
Passa a DDL das 3 tabelas envolvidas para podermos montar um exermplo pra vc.
[]´s
Renato
GOSTEI 0
Ricieri
29/03/2006
Lá vai:
Obs: Não tenho a DDL aqui, to no trampo, mas montei do jeito que ta no banco:
O que pretendo fazer é o seguinte:
Como a tabela vendas e mat_vendas, estão relacionadas, a tabela mat_vendas exibe apenas os materiais que são relacionados àquela venda.
Obs: Não tenho a DDL aqui, to no trampo, mas montei do jeito que ta no banco:
[b:b9e0343d72]Tabela Vendas:[/b:b9e0343d72]
id_venda
dt_venda
vl_total
id_cliente
id_tipo_pagamento
Foreign key: id_cliente references clientes
Foreign key: id_tipo_pagamento references tipo_pagamento
[b:b9e0343d72]Tabela Mat_vendas[/b:b9e0343d72]
id_mat_vendas
quantidade
valor_item
id_item
id_venda
Foreign key: id_item references item
Foreign key: id_venda references vendas
[b:b9e0343d72]Tabela CC[/b:b9e0343d72]
id_cc
id_venda
id_mat_vendas
id_item
id_cliente
data_venda
tipo_pagamento
valor_venda
quantidade
Foreign key: id_venda references vendas
Foreign key: id_mat_vends references mat_vendas
Foreign key: id_item references item
Foreign key: id_cliente references clientes
O que pretendo fazer é o seguinte:
Como a tabela vendas e mat_vendas, estão relacionadas, a tabela mat_vendas exibe apenas os materiais que são relacionados àquela venda.
[b:b9e0343d72]Então pretendo fazer as seguintes inclusões na tabela de Movimentação:[/b:b9e0343d72]
id_venda.vendasid_vendas.cc
id_mat_vendas.mat_vendasid_mat_vendas.cc
id_item.mat_vendasid_item.cc
id_cliente.vendasid_cliente.cc
dt_venda.vendasdata_venda.cc
id_tipo_pagamento.vendastipo_pagamento.cc
valor_venda.mat_vendasvalor_venda.cc
quantidade.mat_vendasquantidade.cc
GOSTEI 0
Ricieri
29/03/2006
[size=18:49d469f34b][i:49d469f34b][b:49d469f34b]Acertando, tava mal explicado a ultima parte..[/b:49d469f34b][/i:49d469f34b][/size:49d469f34b]
Lá vai:
Obs: Não tenho a DDL aqui, to no trampo, mas montei do jeito que ta no banco:
O que pretendo fazer é o seguinte:
Como a tabela vendas e mat_vendas, estão relacionadas, a tabela mat_vendas exibe apenas os materiais que são relacionados àquela venda.
Lá vai:
Obs: Não tenho a DDL aqui, to no trampo, mas montei do jeito que ta no banco:
[b:49d469f34b]Tabela Vendas:[/b:49d469f34b]
id_venda
dt_venda
vl_total
id_cliente
id_tipo_pagamento
Foreign key: id_cliente references clientes
Foreign key: id_tipo_pagamento references tipo_pagamento
[b:49d469f34b]Tabela Mat_vendas[/b:49d469f34b]
id_mat_vendas
quantidade
valor_item
id_item
id_venda
Foreign key: id_item references item
Foreign key: id_venda references vendas
[b:49d469f34b]Tabela CC[/b:49d469f34b]
id_cc
id_venda
id_mat_vendas
id_item
id_cliente
data_venda
tipo_pagamento
valor_venda
quantidade
Foreign key: id_venda references vendas
Foreign key: id_mat_vends references mat_vendas
Foreign key: id_item references item
Foreign key: id_cliente references clientes
O que pretendo fazer é o seguinte:
Como a tabela vendas e mat_vendas, estão relacionadas, a tabela mat_vendas exibe apenas os materiais que são relacionados àquela venda.
[b:49d469f34b]Então pretendo fazer as seguintes inclusões na tabela de Movimentação:[/b:49d469f34b]
id_venda.vendas> id_vendas.cc
id_mat_vendas.mat_vendas> id_mat_vendas.cc
id_item.mat_vendas> id_item.cc
id_cliente.vendas> id_cliente.cc
dt_venda.vendas> data_venda.cc
id_tipo_pagamento.vendas> tipo_pagamento.cc
valor_venda.mat_vendas> valor_venda.cc
quantidade.mat_vendas> quantidade.cc
GOSTEI 0
Emerson Nascimento
29/03/2006
tente assim (não estou com o FB instalado na minha máquina, por isso não testei. espero que dê certo):
nessa trigger eu não estou preenchendo o ID_CC da tabela conta corrente pois creio que isso já seja feito por uma dupla trigger/generator.
CREATE TRIGGER MAT_INSERE_CC FOR MAT_VENDAS ACTIVE AFTER INSERT POSITION 0 AS BEGIN insert into CC (id_venda, id_mat_vendas, id_item, id_cliente, data_venda, tipo_pagamento, valor_venda, quantidade) select ven.id_venda, mat.id_mat_vendas, mat.id_item, ven.id_cliente, ven.dt_venda, ven.id_tipo_pagamento, mat.valor_item, mat.quantidade from vendas ven inner join mat_vendas mat on (mat.id_venda = ven.id_venda) where mat.id_venda = new.id_venda and mat.id_mat_vendas = new.id_mat_vendas END
nessa trigger eu não estou preenchendo o ID_CC da tabela conta corrente pois creio que isso já seja feito por uma dupla trigger/generator.
GOSTEI 0