none
Duplicando informações em uma tabela usando condições de outra tabela RRS feed

  • Pergunta

  • Olá pessoal, tudo bem?

    vejam se é possível fazer isso ou eu estou viajando demais.rsrsrs

    Eu tenho um tabela (Tributação especifica) que é relacionada com outra tabela (produtos) pelo IDProduto.

    Nessa tabela de Tributação especifica eu tenho 6 linhas inseridas que são tributações especificas de um unico produto. Eu agora precisaria pegar essas 6 linhas e duplicar elas para outros produtos.

    só que existe uma condição pra essa duplicação, Precisa ser duplicado para todos os produtos que la na tabela PRODUTO, a Sttributacaoespecifica esteja como 'S'

    valeu galera desde já pela possível ajuda.


    segunda-feira, 26 de novembro de 2018 19:17

Respostas

Todas as Respostas

  • Deleted
    • Sugerido como Resposta Rodrigo CdS segunda-feira, 26 de novembro de 2018 19:46
    segunda-feira, 26 de novembro de 2018 19:28
  • As informações estão vagas demais... Poderia postar detalhes?

    Eis esboço do código:

    -- código #1
    with Duplicar as ( SELECT colunas from Tributação where IDProduto = ___ ) SELECT P.IDProduto, ... from Produto as P cross join Duplicar as D where P.Sttributacaoespecifica = 'S' and P.IDProduto <> ___;


    José Diz     Belo Horizonte, MG - Brasil     [Linked In]   [e-mail]   [Porto SQL]


    Este conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Olá, Lekao87!

       Segue um exemplo utilizando a própria solução sugerida pelo José Diz. Lembrando que considerei que, de fato, os tributos teriam o mesmo nome na própria tabela, mudando apenas o id e o produto. No exemplo já considerei gerar um script caso você deseja utilizar esta query para inserção destas informações no seu banco de dados. É só um exemplo.

    declare @produto as table
    (
    	Id						int,
    	Nome					varchar(50),
    	Sttributacaoespecifica	char(1) NULL
    )
    
    insert into @produto (Id, Nome, Sttributacaoespecifica) values 
    (1, 'Produto 1', 'S'), 
    (2, 'Produto 2', NULL), 
    (3, 'Produto 3', 'S'), 
    (4, 'Produto 4', 'S')
    
    select * from @produto
    
    declare @tributacaoEspecifica as table
    (
    	Id			int identity (1,1),
    	IdProduto	int,
    	Nome		varchar(50)
    )
    
    insert into @tributacaoEspecifica (IdProduto, Nome) values
    (1, 'Trb1'),
    (1, 'Trb2'),
    (1, 'Trb3'),
    (1, 'Trb4'),
    (1, 'Trb5'),
    (1, 'Trb6')
    
    
    ;with Duplicar as (
    SELECT Id, IdProduto, Nome
      from @tributacaoEspecifica
      where IdProduto = 1
    )
    
    SELECT 
    	P.Id as IdProduto
    	, D.Id as IdTributo
    	, D.Nome
    	, 'insert into @tributacaoEspecifica (IdProduto, Nome) values (' + cast(P.Id as varchar) + ', ''' + D.Nome + ''');'
      from @produto as P
           cross join Duplicar as D
      where P.Sttributacaoespecifica = 'S'
            and P.Id <> 1
    order by P.Id, D.Id;
    
    
    insert into @tributacaoEspecifica (IdProduto, Nome) values (3, 'Trb1');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (3, 'Trb2');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (3, 'Trb3');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (3, 'Trb4');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (3, 'Trb5');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (3, 'Trb6');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (4, 'Trb1');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (4, 'Trb2');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (4, 'Trb3');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (4, 'Trb4');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (4, 'Trb5');
    insert into @tributacaoEspecifica (IdProduto, Nome) values (4, 'Trb6');
    
    select * from @tributacaoEspecifica
    Divirta-se!

    segunda-feira, 26 de novembro de 2018 19:52
  • o seu comando me ajudou baste

    o comando ficou assim:

    with Duplicar as (
    SELECT cdempresa, idcfop, tpoperacao, tpoperacaocomplementar, idcfopequivalente, iduf
      from Produto_Empresa_CFOP
      where IDProduto = '00A0000HXW' )
    SELECT P.IDProduto, d.cdempresa, d.idcfop, d.tpoperacao, d.tpoperacaocomplementar, d.idcfopequivalente, d.iduf
      from Produto as P
           cross join Duplicar as D
      where P.Sttributacaoespecifica = 'S'
            and P.IDProduto <> '00A0000HXW';

    o resultado dele é exatamente o que preciso inserir na tabela 'Produto_Empresa_CFOP'. como terminar agora?

    • Editado Lekao87 segunda-feira, 26 de novembro de 2018 20:09
    segunda-feira, 26 de novembro de 2018 20:07
  • Deleted
    segunda-feira, 26 de novembro de 2018 21:50