EAlcantara Postado Maio 27, 2015 Denunciar Share Postado Maio 27, 2015 (editado) Estou com a seguinte situação, que nunca havia enfrentado antes, já perdi alguns dias tentando descobrir uma forma de repetir os valores nos campos vazios abaixo. nome_cor | Id_produto| rosa | 10 | verde | | azul | | amarelo verde | | rosa | | verde | 125 | azul | | amarelo verde | | laranja | | cinza dourado | 136 | amarelo verde | | rosa | 45 | verde | | azul | | amarelo verde | | laranja | | cinza dourado | | Preciso que fique com o seguinte formato, alguém conhece alguma forma de fazer isso no mysql? nome_cor | Id_produto| rosa | 10 | verde | 10 | azul | 10 | amarelo verde | 10 | rosa | 10 | verde | 125 | azul | 125 | amarelo verde | 125 | laranja | 125 | cinza dourado | 136 | amarelo verde | 136 | rosa | 45 | verde | 45 | azul | 45 | amarelo verde | 45 | laranja | 45 | cinza dourado | 45 | Editado Maio 27, 2015 por EAlcantara Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 27, 2015 Denunciar Share Postado Maio 27, 2015 Analise o teste abaixo e informe progresso: -- selecionei meu banco de teste use test; -- criei uma tabela com os dados que vc passou create table cor( nome_cor varchar(50), Id_produto int ); -- inseri os valores que vc passou insert into cor(nome_cor,Id_produto) values("rosa",10),("verde",null),("azul",null),("amarelo verde",null), ("rosa",null),("verde",125),("azul",null),("amarelo verde",null), ("laranja",null),("cinza dourado",136),("amarelo verde",null), ("rosa",45),("verde",null),("azul",null),("amarelo verde",null), ("laranja",null),("cinza dourado",null) ; -- criei um select para saber quais produtos estavam cadastrados para que cores select * from cor where not id_produto is null ; -- Criei sql de atualização com base no sql acima update cor c1 inner join (select * from cor where not id_produto is null) c2 on c2.nome_cor = c1.nome_cor set c1.id_produto = c2.id_produto where c1.id_produto is null ; Link para o comentário Compartilhar em outros sites More sharing options...
0 EAlcantara Postado Maio 27, 2015 Autor Denunciar Share Postado Maio 27, 2015 Muito obrigado pela ajuda, vou tentar essa solução agora mesmo. :D Link para o comentário Compartilhar em outros sites More sharing options...
0 EAlcantara Postado Maio 27, 2015 Autor Denunciar Share Postado Maio 27, 2015 Boa noite, Denis verifiquei a sua alternativa, mas não é o que eu pretendo. A coluna id produto serve para agrupar produtos iguais, mas com características diferentes, exemplo o produto 10 é calça feminina cintura alta. Todos os campos que estão null abaixo até que tenha um novo valor maior que zero são o mesmo produto, porém com cor e tamanho. Pretendo associar todos esses produtos que se diferenciam apenas por cor e tamanho dentro de um mesmo Identificador. Consigo facilmente identificar onde cada produto inicia e atribuo um ID, esse ID deve ser replicado para baixo, de forma que eu posso simplesmente ignorar a coluna cor porque consigo saber a sequência correta em que ID_PRODUTO, fazendo o seguinte select "Select id_produto from cor order by item_id asc;" Sendo que item_id é chave primaria que vai de 1 a n... com auto incremento. Poderíamos inclusive desprezar a coluna cor pois o id não se relaciona diretamente com a cor. Atualmente esse select me entrega essa coluna | Id_produto | | 10 | | | | | | | | | | 125 | | | | | | | | 136 | | | | 45 | | | | | | | | | | | Ao fazer um update espero que ela me entregue isso |Id_produto | | 10 | | 10 | | 10 | | 10 | | 10 | | 125 | | 125 | | 125 | | 125 | | 136 | | 136 | | 45 | | 45 | | 45 | | 45 | | 45 | | 45 | Hoje tentarei fazer usando WHILE (mas não domino isso no SQL) tentando fazer com que enquanto o campo id_produto for vazio o laço preencha o campo com o conteúdo do campo acima. Grato pela ajuda, se puder continuar me ajudando a conseguir uma solução serei muito grato. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Maio 28, 2015 Denunciar Share Postado Maio 28, 2015 Estude sobre storage procedure.Sem este tipo de rotina você não conseguirá fazer o que quer. Link para o comentário Compartilhar em outros sites More sharing options...
0 EAlcantara Postado Maio 30, 2015 Autor Denunciar Share Postado Maio 30, 2015 Bom dia, consegui uma alternativa, como o problema esta afetando arquivos de entrada que recebo em planilhas do Excel usei a seguinte solução... https://social.msdn.microsoft.com/Forums/pt-BR/02145eea-7528-45d6-abf5-f34153d4b54a/preencher-campo-em-branco-com-valor-acima-vba-?forum=vbaptEstudarei mais sobre procedures, grato pela atenção. Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
EAlcantara
Estou com a seguinte situação, que nunca havia enfrentado antes, já perdi alguns dias tentando descobrir uma forma de repetir os valores nos campos vazios abaixo.
Preciso que fique com o seguinte formato, alguém conhece alguma forma de fazer isso no mysql?
Editado por EAlcantaraLink para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados