Group by - agrupamento estranho

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

Segue a doc…

http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

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

Algumas dicas sobre mysqlimport…

http://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html