Usuário com melhor resposta
Insert com inner Join

Pergunta
-
Bom dia amigos da msdm!
Pessoal to com uma grande duvida, sempre quando vo busca itens em em tabelas relacionadas uso WHERE, agora como inserir itens em 2 tabelas relacionada?
Tenho a seguintes Tabelas!
TBVenda TBProdutoVenda
codigo PK codigo
datacompra codBarraProduto
formaPag quantidade
Total ValorUnitarioAmigos aqui o relacionamento sera 1 para muito, ao efetuar uma venda 1 unico registro na TBVenda e todos Produtos vendidos na TBProdutoVendido.
Dei uma pesquisada e vi que é possivel Inserir os registro ja com relacionamento, tipo INSERT com INNER JOIN.
Amigos to terminando um sistema em VB.NET não conheço so o basico de SQL.Podem me ajudar com a query?Valeu amigos e um otimo dia!
To pora qui tentando.
Anderson.mds
Respostas
-
Olá Anderson,
Na realidade para inserir nessas duas tabelas será preciso dois INSERT's no mínimo, uma vez que para inserir dados na tabela TBProdutoVenda você já precisa ter um registro inserido e correspondente na tabela TBVenda (Ou pelo menos deveria estar assim).
Resumindo, você precisa inserir um registro nessa tabela TBVenda e recuperar o "codigo" recém inserido para que possa ser usado no momento de inserir os produtos daquela venda na tabela TBProdutoVenda. Então, na minha visão terás que ter 2 instruções de insert para fazer o que deseja e deixar mais legível o seu código também.
Abaixo deixo um exemplo bem simples, baseado no que eu comentei.
INSERT INTO TBVenda (datacompra, formapag, Total) VALUES ('10/10/2016', 'Dinheiro', 200.00) DECLARE @codigo INT = SCOPE_IDENTITY() INSERT INTO TBProdutoVenda(codigo, codBarraProduto, quantidade, ValorUnitario) SELECT @codigo, '98978979797', 1, 100.00 UNION SELECT @codigo, '74747474747', 1, 100.00
OBS: É um código apenas para exemplificar como que pode ser feito. Estou assumindo que a coluna codigo na tabela TBVenda seja Identity, ou seja, é uma chave auto-incremental.
Espero ter ajudado!
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Robson William Silva terça-feira, 11 de outubro de 2016 12:22
Todas as Respostas
-
Bom dia amigos da msdm!
Pessoal to com uma grande duvida, sempre quando vo busca itens em em tabelas relacionadas uso WHERE, agora como inserir itens em 2 tabelas relacionada?
Tenho a seguintes Tabelas!
TBVenda TBProdutoVenda
codigo PK codigo
datacompra codBarraProduto
formaPag quantidade
Total ValorUnitarioAmigos aqui o relacionamento sera 1 para muito, ao efetuar uma venda 1 unico registro na TBVenda e todos Produtos vendidos na TBProdutoVendido.
Dei uma pesquisada e vi que é possivel Inserir os registro ja com relacionamento, tipo INSERT com INNER JOIN.
Amigos to terminando um sistema em VB.NET não conheço so o basico de SQL.Podem me ajudar com a query?Valeu amigos e um otimo dia!
To pora qui tentando.
Anderson.mds
Anderson.mds
-
-
Olá Anderson,
Na realidade para inserir nessas duas tabelas será preciso dois INSERT's no mínimo, uma vez que para inserir dados na tabela TBProdutoVenda você já precisa ter um registro inserido e correspondente na tabela TBVenda (Ou pelo menos deveria estar assim).
Resumindo, você precisa inserir um registro nessa tabela TBVenda e recuperar o "codigo" recém inserido para que possa ser usado no momento de inserir os produtos daquela venda na tabela TBProdutoVenda. Então, na minha visão terás que ter 2 instruções de insert para fazer o que deseja e deixar mais legível o seu código também.
Abaixo deixo um exemplo bem simples, baseado no que eu comentei.
INSERT INTO TBVenda (datacompra, formapag, Total) VALUES ('10/10/2016', 'Dinheiro', 200.00) DECLARE @codigo INT = SCOPE_IDENTITY() INSERT INTO TBProdutoVenda(codigo, codBarraProduto, quantidade, ValorUnitario) SELECT @codigo, '98978979797', 1, 100.00 UNION SELECT @codigo, '74747474747', 1, 100.00
OBS: É um código apenas para exemplificar como que pode ser feito. Estou assumindo que a coluna codigo na tabela TBVenda seja Identity, ou seja, é uma chave auto-incremental.
Espero ter ajudado!
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MSP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Marcado como Resposta Robson William Silva terça-feira, 11 de outubro de 2016 12:22
-
-