CrazyLOL 2 Denunciar post Postado Janeiro 13, 2014 Galera, montei este select, e está funcionando em partes... SELECT c.`cod_empresa`, c.`cod_loja`, d.nome AS nome_empresa, b.nome, c.usuario, e.meta_cdc_anual, e.meta_cdc_desafio, SUM( CASE WHEN a.`cod_status` = 6 THEN 1 ELSE 0 END ) AS 'FATURADA' FROM propostas c LEFT OUTER JOIN propostas_status a ON a.`cod_proposta` = c.`cod_proposta` LEFT OUTER JOIN empresas_usuarios b ON b.`usuario` = c.`usuario` LEFT OUTER JOIN empresas_lojas d ON (d.cod_loja = c.cod_loja) LEFT OUTER JOIN usuarios_metas e ON (e.usuario = c.usuario) WHERE c.cod_empresa = 6 AND c.usuario = 'user' AND c.data_cadastro >= '2014-01-01' AND c.data_cadastro <= '2014-12-31' GROUP BY c.`usuario` ORDER BY c.`cod_loja`; Bom neste select a informação está saindo assim: cod_empresa | cod_loja | nome_empresa | nome | usuario | meta_cdc_anual | meta_cdc_desafio | faturada 6 | 54 | LOJA 1 | User | Usuario | 10 | 20 | 4 Bem como disse está funcionando em partes, a parte que não está funcionando é que não tenho 4 Ficha faturadas na data que citei acima, só tenho apenas 2 fichas, as outras 2 fichas são de 2013. Não entendi porque ele está me trazendo essas 4 fichas, sendo que já estou citando o periodo. O que posso ter feito de errado? Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Janeiro 13, 2014 Tente converter para date assim: SELECT c.`cod_empresa`, c.`cod_loja`, d.nome AS nome_empresa, b.nome, c.usuario, e.meta_cdc_anual, e.meta_cdc_desafio, SUM( CASE WHEN a.`cod_status` = 6 THEN 1 ELSE 0 END ) AS 'FATURADA' FROM propostas c LEFT OUTER JOIN propostas_status a ON a.`cod_proposta` = c.`cod_proposta` LEFT OUTER JOIN empresas_usuarios b ON b.`usuario` = c.`usuario` LEFT OUTER JOIN empresas_lojas d ON (d.cod_loja = c.cod_loja) LEFT OUTER JOIN usuarios_metas e ON (e.usuario = c.usuario) WHERE c.cod_empresa = 6 AND c.usuario = 'user' AND c.data_cadastro >= date('2014-01-01') AND c.data_cadastro <= date('2014-12-31') GROUP BY c.`usuario` ORDER BY c.`cod_loja`; Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 13, 2014 além disto use between, fica mais limpo. AND c.data_cadastro BETWEEN date('2014-01-01') AND date('2014-12-31') Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Janeiro 13, 2014 Obrigado Roberto e Motta, porém continuo com o mesmo resultado... Select como está agora: SELECT c.`cod_empresa`, c.`cod_loja`, d.nome AS nome_empresa, b.nome, c.usuario, e.meta_cdc_anual, e.meta_cdc_desafio, SUM( CASE WHEN (a.`cod_status` = 6) THEN 1 ELSE 0 END ) AS 'FATURADA' FROM propostas c LEFT OUTER JOIN propostas_status a ON a.`cod_proposta` = c.`cod_proposta` LEFT OUTER JOIN empresas_usuarios b ON b.`usuario` = c.`usuario` LEFT OUTER JOIN empresas_lojas d ON (d.cod_loja = c.cod_loja) LEFT OUTER JOIN usuarios_metas e ON (e.usuario = c.usuario) WHERE c.cod_empresa = 6 AND c.usuario = 'user' AND c.data_cadastro BETWEEN DATE('2014-01-01') AND DATE('2014-12-31') GROUP BY c.`usuario` ORDER BY c.`cod_loja`; Para ficar um pouco mais facil de entender a estrutura das minhas tabelas, segue em anexo um print dela. A Referencia que uso na proposta_status é apenas a cod_proposta. As outras tabelas que estou fazendo join são apenas para recuperar nome ou algum valor das metas. Print: http://postimg.org/image/t6vcpcwvx/ Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 13, 2014 1) propostas.data_cadastro é do tipo DATE ? 2) TENTOU USAR STR_TO_DATE ? AND c.data_cadastro BETWEEN STR_TO_DATE('01,1,2014','%d,%m,%Y') AND STR_TO_DATE('31,1,2014','%d,%m,%Y') Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Janeiro 13, 2014 Sim ela é do tipo Date. Fiz da forma que você citou agora, porém não adiantou... Esse paranaue está estranho.. :P Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Janeiro 13, 2014 Verifique se todas as colunas dos joins foram feitas. Rode a query em algum visualizador com "select *" para ver se não há produto cartesiano indevido. Rode a query exibindo c.data_cadastro para certificar que está trazendo lixo. Compartilhar este post Link para o post Compartilhar em outros sites
CrazyLOL 2 Denunciar post Postado Janeiro 13, 2014 Achei o problema... estava na tabela usuarios_metas ... Agora resolvi... Obrigado pela atenção. ;) Compartilhar este post Link para o post Compartilhar em outros sites