Olá,
Estou tendo um problema ao fazer uma consulta no MYSQL:
SELECT
rebaixa.inicio, mercadoria.secao, count(*)
FROM
rebaixa,mercadoria
WHERE
rebaixa.inicio = ‘2017-01-06’ AND mercadoria.ean = rebaixa.ean
GROUP BY
rebaixa.inicio, mercadoria.secao
Porém a consulta está gerando uma tabela (relativamente correta) mas com dados repetidos:
# inicio, secao, count(*)
'2017-01-06', '1', '5'
'2017-01-06', '3', '8'
'2017-01-06', '3\r', '4'
'2017-01-06', '4', '12'
'2017-01-06', '4\r', '9'
'2017-01-06', '6', '3'
'2017-01-06', '6\r', '3'
'2017-01-06', '7', '1'
Onde tem, por exemplo ‘3’ (no caso seria uma seção com id = 3) e ‘3\t’ (no mysql só aparece ‘3’), deveria ter apenas um ‘3’ com count = 12. Somando os 2 count deles dá 12.
Como eu corrijo isso? estou fazendo algo errado na consulta… se precisarem de mais dados por favor acionar.
Obrigado
Pelo result que postou, o problema está que sua base de dados está com inconsistencia no campo secao. Você tem secao c/ “3” e “3/r” … Este “/r” é quebra de linha (se não me engano) Quer ver um teste tenta filtrar por esta data ‘2017-01-06’ e onde secao é igual a “3” veja se irá trazer 12 resultados.
2 curtidas
Para o banco de dados, são textos diferentes, a forma mais simples é limpando a coluna retirando \r,\t, \n, etc…
Alguma linguagem de programação está preenchendo esse valor? Precisa padronizar isso retirando os caracteres de escape antes de gravar no banco…
Pode tentar usar a função REPLACE dando um update nessa coluna…
1 curtida
se eu faço secao = ‘3’ aparece apenas um resultado = 8;
porém se eu faço secao = 3 aparece os 2 valores 8 e 4 separados…
entendi. vou fazer o replace. o replace(‘3\t’, ‘\t’, ‘’) ficaria assim mesmo?
Exato! Melhor seria
replace(secao, ‘\t’, ‘’) …
Agora quanto à consulta, o mysql se comporta diferente dependendo do tipo de dado que se usa, tente encontrar as ocorrências assim:
secao LIKE ‘3%’
2 curtidas
Além de usar os ajustes que o @LostSoldier recomendou, sugiro verificar por que dessas inconsistência. Acredito que você usa esta secao como uma chave, certo? Esses dados foram importados de algum txt ou csv ? Eu tinha problemas semelhantes com cargas de arquivos, então no momento do upload nos métodos de acesso dos atributos já colocava os replace da vida p/ evitar dor de cabeça.
2 curtidas
é exatamente isso. vou fazer esse procedimento. Muito obrigado