none
Insert com inner Join RRS feed

  • 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                                      ValorUnitario

    Amigos 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

    segunda-feira, 10 de outubro de 2016 10:44

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

    segunda-feira, 10 de outubro de 2016 11:12

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                                      ValorUnitario

    Amigos 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

    Amigos estou usando o Banco de Dados Access!

    Anderson.mds

    segunda-feira, 10 de outubro de 2016 10:52
  • dom dia anderson....

    Exemplo bem simples:

    INSERT INTO [CadProduto]
               ([Codigo]
               ,[Descricao])
    select TBVenda.codigo, TBProdutoVenda.descricao
    from TBVenda
    inner join TBProdutoVenda
    on TBVenda.codigo = TBProdutoVenda.codigo
    segunda-feira, 10 de outubro de 2016 11:01
  • 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

    segunda-feira, 10 de outubro de 2016 11:12
  • Deleted
    segunda-feira, 10 de outubro de 2016 11:47
  • Boa tarde André Secco!

    Cara eu to usando um Banco de Dados Access!
    Tudo que vc disse serve!

    To preocupado, parece ser complicado!


    Anderson.mds

    segunda-feira, 10 de outubro de 2016 15:26