leoneh 0 Denunciar post Postado Julho 10, 2016 Pessoal estou tendo o seguinte problema. ao realizar a consulta abaixo os resultados aparecem normalmente, porem as contagens com valor 0 não aparecem e preciso delas para tratar o resultado na aplicação. OBS: Sou completamente leigo em relação a "SQL". SELECT clientes.`instalacao`, clientes.`periodo` , COUNT(clientes.`instalacao`) FROM `clientes` WHERE `periodo`= 'Tarde' GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC LIMIT 30 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 10, 2016 Use o HAVING http://www.bosontreinamentos.com.br/mysql/mysql-having-filtrando-os-resultados-do-agrupamento-27/ Compartilhar este post Link para o post Compartilhar em outros sites
leoneh 0 Denunciar post Postado Julho 10, 2016 Não sei se utilizei o 'HAVING' da maneira correta mas não resolveu meu problema. Exemplo SELECT clientes.`instalacao`, clientes.`periodo` , COUNT(clientes.`instalacao`) FROM `clientes` WHERE `periodo`= 'Tarde' GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC having COUNT(clientes.`instalacao`) >= 0 LIMIT 30 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 10, 2016 Usou certo , eu que entendi errado o problema. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 10, 2016 No caso vc quer saber clientes que não são "tarde" , correto !? Compartilhar este post Link para o post Compartilhar em outros sites
leoneh 0 Denunciar post Postado Julho 10, 2016 Sim, exatamente mas quando o valor e "0" o resultado e ignorado. SELECT clientes.`instalacao`, clientes.`periodo` , COUNT(clientes.`instalacao`) FROM `clientes` WHERE `periodo`= 'Tarde' GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC having COUNT(clientes.`instalacao`) >= 0 LIMIT 30 Me retorna o seguinte O problema e que no dia 02-07-2016 não houve nenhum registro tarde Portanto foi ignorado na consulta. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 10, 2016 Uma solucao é usar o CASE SELECT clientes.`instalacao`, clientes.`periodo` , Sum(Case when `periodo`= 'Tarde' then 1 else 0 end) FROM `clientes` WHERE `periodo`= 'Tarde' GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC LIMIT 30 Compartilhar este post Link para o post Compartilhar em outros sites
leoneh 0 Denunciar post Postado Julho 11, 2016 SELECT clientes.`instalacao`, clientes.`periodo` , Sum(Case when `periodo`= 'Tarde' then 1 else 0 end) FROM `clientes` WHERE `periodo`= 'Tarde' GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC LIMIT 30 Tentei dessa forma mas o resultado foi o mesmo. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 11, 2016 SELECT clientes.`instalacao`, clientes.`periodo` , Sum(Case when `periodo`= 'Tarde' then 1 else 0 end) FROM `clientes` GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC LIMIT 30 Compartilhar este post Link para o post Compartilhar em outros sites
leoneh 0 Denunciar post Postado Julho 11, 2016 SELECT clientes.`instalacao`, clientes.`periodo` , Sum(Case when `periodo`= 'Tarde' then 1 else 0 end) FROM `clientes` GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC LIMIT 30 \o/\o/\o/, muito obrigado, agora funcionou perfeitamente. Ficou assim SELECT clientes.`instalacao`, clientes.`periodo` , Sum(Case when `periodo`= 'Tarde' then 1 else 0 end) resultadotd FROM `clientes` GROUP BY STR_TO_DATE(clientes.`instalacao`,'%d-%m-%Y') DESC LIMIT 30 Compartilhar este post Link para o post Compartilhar em outros sites