HM Posted October 10, 2014 Report Share Posted October 10, 2014 Boas, Não sei se existe alguma alma caridosa que me possa ajudar a resolver um pequeno problema. Tenho uma BD onde eu queria ter a média de um dos campos por mês. Tenho um capo com C_data que regista as datas com o formato AAAA-MM-DD e outro com C_resultados. Eu consigo recuperar os valores que esta nos meses o meu problema esta em somar os mesmos. Estou a fazer alguma coisa mal e não estou a consegui resolver. Se alguém poder ajudar deste já agradeço Link to comment Share on other sites More sharing options...
alexviseu Posted October 10, 2014 Report Share Posted October 10, 2014 Nao sabendo de cor as funcoes de datas no MySQL, podias fazer algo como uma subquery para te listar o mes com os resultados e depois uma query acima dessa que te fizesse o group by com o avg. Algo do genero: SELECT `month`, AVG(`C_resultados`) AS `average` FROM ( SELECT getmonth(`C_data`) as `month`, `C_resultados` FROM `c_tabela` WHERE /*FILTRO AQUI*/ ) as `inner_table` group by `month` PS: Nao sei se e' possivel fazer o "group by getmonth(`C_data)", mas a ser possivel poderias simplificar a query. Link to comment Share on other sites More sharing options...
HM Posted October 10, 2014 Author Report Share Posted October 10, 2014 obrigado Alexviseu, logo que possa vou testar e já te digo alguma coisa 👍 Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 10, 2014 Report Share Posted October 10, 2014 É possível pelo menos usar o alias definido para o mês, pelo que ficaria algo como: SELECT year(`C_data`) as `year`, month(`C_data`) as `month`, AVG(`C_resultados`) as `average` FROM `t` GROUP BY `year`, `month`; Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
joao_info Posted October 10, 2014 Report Share Posted October 10, 2014 Consegues aceder as query's através de C#, ou seja, estas a utilizar SQL to Linq ? Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 11, 2014 Report Share Posted October 11, 2014 Penso que o utilizador está a usar PHP, não C#. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
HM Posted October 12, 2014 Author Report Share Posted October 12, 2014 (edited) Boa tarde pessoal 🙂 e obrigado pela a vossa ajuda. eu estou a usar PHP e não c# e ainda não consegui resolver o problema 😞 Edited October 12, 2014 by HM Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 12, 2014 Report Share Posted October 12, 2014 A query que indiquei foi testada em MySQL. A menos que estejas a usar outro SGBD, a mesma deverá funcionar, embora possa precisar de algumas adaptações (e.g., corrigir o nome da tabela). Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
HM Posted October 12, 2014 Author Report Share Posted October 12, 2014 😞 não estou a consegui eu tenho uma coisa assim que me dá os resultados total do ano <?php $sql = "SELECT SUM(C_resultados from tb_resultados"; $query = mysql_query($sql); while ($exibir = mysql_fetch_array($query)){; $total_res = $exibir['SUM(C_resultados)']; } ... ?> <td><? echo round($total_res) ?></td> mas eu queria ter os resultados de cada um dos meses e ao fim o total do ano :/ Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 12, 2014 Report Share Posted October 12, 2014 Olha para as respostas que te foram dadas. E se não as perceberes, coloca as dúvidas que estiveres. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
HM Posted October 12, 2014 Author Report Share Posted October 12, 2014 Desculpa Carlos e agradeço a tua boa vontade em me ajudar mas não estou a conseguir. Eu consigo ter os valores de cada mês em lista depois não consigo somá-los. por este método que me enviaste não consigo fazer nada. Compreendo o que devia acontecer mas nada. Substitui o “t” pelo o nem da tabela “tb_resultados” e nada fiz alguma alterações cm outro métodos que estão na net e nada devo estar a fazer alguma coisa mesmo mal Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 12, 2014 Report Share Posted October 12, 2014 Correste a query directamente no MySQL? A query (para as médias dos meses) está testada aqui. Por isso, diria que o problema não está no código que te indiquei. 1 Report Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
HM Posted October 12, 2014 Author Report Share Posted October 12, 2014 (edited) 🙂 só memso com um desenho chegava lá 👍 no SQL "funca" agora no php não estoua conceguir obrigado Carlos Edited October 12, 2014 by HM Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 12, 2014 Report Share Posted October 12, 2014 No PHP precisas de iterar sobre as linhas, e para cada uma ir buscar os atributos year, month e average. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
HM Posted October 13, 2014 Author Report Share Posted October 13, 2014 não estou a conseguir no PHP fazer nada com isso, nem consultar o único valor que consegui recolher foi um 0 Link to comment Share on other sites More sharing options...
HM Posted October 13, 2014 Author Report Share Posted October 13, 2014 Pode parecer estupido mas a única maneira que eu tenho de conseguir ver os meses é assim $sql_visualizar = mysql_query("SELECT * FROM tb_resultados"); while($linha = mysql_fetch_array($sql_visualizar)){ $ver_data = $linha['c_data']; $a = $ver_data[5].$ver_data[6]; Deve haver uma maneira mais fácil 😞 E depois estou a fazer um switch ($a) { case 01: e por ai fora e mesmo assim não me esta a dar Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 13, 2014 Report Share Posted October 13, 2014 Continuas a mostrar apenas código que não usa a query que te foi sugerida. Não sei se estás à espera que alguém adivinhe os erros que tinhas no código que não funcionava e que não mostraste, mas diria que isso é pouco provável acontecer. Também não sei muito bem de onde é que este problema surgiu, mas era capaz de ser boa ideia estudares uma referência de PHP primeiro. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
HM Posted October 13, 2014 Author Report Share Posted October 13, 2014 Rui mais uma vez agradeço o teu empenho assim como a tua boa vontade em me ajudar. Como eu referi no post mias a cima não estou a conseguir fazer nada com a query que me sugeriste. Nao estou a dizer que o erro é do codigo mas meu. Não percebi a tua pregunta "Também não sei muito bem de onde é que este problema surgiu, mas era capaz de ser boa ideia estudares uma referência de PHP primeiro." Link to comment Share on other sites More sharing options...
Rui Carlos Posted October 13, 2014 Report Share Posted October 13, 2014 Rui mais uma vez agradeço o teu empenho assim como a tua boa vontade em me ajudar. Como eu referi no post mias a cima não estou a conseguir fazer nada com a query que me sugeriste. Nao estou a dizer que o erro é do codigo mas meu. E eu "perguntei-te" se estás à espera que alguém descubra o teu erro, sem mostrares o código que não funcionava. Adicionalmente, nesta última mensagem disseste basicamente que não sabes iterar sobre os resultados de um query em PHP, daí "ser boa ideia estudares uma referência de PHP primeiro" (ou seja, aprenderes as bases de forma organizada usando um bom tutorial de PHP, e começares por tirares dúvidas em problemas mais básicos do que este). Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now