ReDNoS Postado Agosto 18, 2008 Denunciar Share Postado Agosto 18, 2008 Gostaria de saber como faço para odernar um Group de uma tabela...Existe algum comando Order Group By ou Group order By? Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Agosto 18, 2008 Denunciar Share Postado Agosto 18, 2008 Movendo... PHP » MySQL. Link para o comentário Compartilhar em outros sites More sharing options...
0 jothaz Postado Agosto 18, 2008 Denunciar Share Postado Agosto 18, 2008 É order by mesmo:SELECT MAX(DTH_SORTEIO) FROM RESULTADO WHERE NUM_PRODUTO IN (9329) GROUP BY YEAR(DTH_SORTEIO), MONTH(DTH_SORTEIO) ORDER BY YEAR(DTH_SORTEIO) , MONTH(DTH_SORTEIO) Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 18, 2008 Denunciar Share Postado Agosto 18, 2008 É order by mesmo:SELECT MAX(DTH_SORTEIO) FROM RESULTADO WHERE NUM_PRODUTO IN (9329) GROUP BY YEAR(DTH_SORTEIO), MONTH(DTH_SORTEIO) ORDER BY YEAR(DTH_SORTEIO) , MONTH(DTH_SORTEIO)Complementando o que o 'jothaz' falou no post anterior.O ORDER BY em um GROUP BY só vale a pena se o atributo a ser ordenado estiver fora da ordenação própria do GROUP BY.Isto porque o GROUP BY já vem ordenado pelas cláusulas que o compõem. Exemplo: O código no post anterior trará a ordenação por YEAR(DTH_SORTEIO), MONTH(DTH_SORTEIO) mesmo sem a cláusula ORDER BY. Porém, se você quizesse a ordenação por mes e ano ou por MAX(DTH_SORTEIO), então você deveria usar o ORDER BY. Link para o comentário Compartilhar em outros sites More sharing options...
0 ReDNoS Postado Agosto 18, 2008 Autor Denunciar Share Postado Agosto 18, 2008 Mas o que eu quero é o seguinte:Eu primeiramente quero pegar o valor mais alto do abnormalupdate.ScoreDeta de cada abnormalupdate.Id e depois agrupar por abnormalupdate.Id para que me mostre o ScoreDelta mais alto de cada Id.Dessa forma, sem group, ele faz quase o que eu quero:$result2 = $db->Execute("SELECT * FROM game, abnormalupdate where abnormalupdate.ID=game.id order by abnormalupdate.Id DESC, abnormalupdate.ScoreDelta DESC"); Ele organiza pelo Id DESC e depois pelo ScoreDelta DESC mostrando por primeiro o ScoreDetal mais alto de cada ID, porém, o problema é que ele vai mostar mais de um mesmo ID e é por isso que eu gostaria de agrupar por ID mostrando o seu ScoreDelta mais alto. Se eu fizer isso: $result2 = $db->Execute("SELECT * FROM game, abnormalupdate where abnormalupdate.ID=game.id GROUP By abnormalupdate.Id order by abnormalupdate.Id DESC, abnormalupdate.ScoreDelta DESC");Então ele primeiro irá agrupar pelo ID, depois irá ordenar pelo ID e depois pelo ScoreDelta e irá mostrar o primeiro ScoreDelta da tabela! E eu não quero mostrar o primeiro ScoreDelta da tabela mas sim o maior valor ScoreDetal da tabela! Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 18, 2008 Denunciar Share Postado Agosto 18, 2008 Oi, ReDNoS!Conforme o que entendi do post anterior, sua solução seria como esta:SELECT abnormalupdate.Id , MAX(abnormalupdate.ScoreDeta) AS maior_valor FROM abnormalupdate GROUP BY abnormalupdate.Id ORDER BY abnormalupdate.Id, maior_valor DESC;Não há a necessidade de um JOIN. esta seria válida se houvesse algum atributo de "game" que necessitasse ser exibido. Link para o comentário Compartilhar em outros sites More sharing options...
0 ReDNoS Postado Agosto 19, 2008 Autor Denunciar Share Postado Agosto 19, 2008 Valeu hein! Consegui fazer aqui do jeitinho que eu queria ;D Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ReDNoS
Gostaria de saber como faço para odernar um Group de uma tabela...
Existe algum comando Order Group By ou Group order By?
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados