Ir para conteúdo
Fórum Script Brasil
  • 0

Distinct Mas Ordenado


Error404

Pergunta

Salve salve sêo gladiador... smile.gif

Queria saber se existe alguma coisa que eu possa fazer no sentido de dar um SELECT DISINCT numa tabela e retornar os resultados ordenados pelo nº de aparições, os que tem mais entradas repetidas aparecem primeiro.

Dei uma olhada no manual do MySQL mas não encontrei nada parecido. Tem como fazer? huh.gif

Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

/* Fala 404 pera ai ...... o SELECT DISTINCT limpará a duplicidade ou seja :


nome   |pontos
-------------------
error   |12
-------------------
error   |10
-------------------
joao    |12
-------------------
joao   |13 


ou seja :

Select DISTINCT  nome  from tabela

nome 
--------
error 
--------
joao 

sem distinct 

nome
------------
error
------------
error
-------------
joão
-------------
joão 
-------------

manja ?

agora se ta querendo uma rotina que se no caso tivesse 7 vezes o error traria ele como mais repetido é isso ?

*/

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, cara, eu sei... happy.gif

Mas eu perguntei outra coisa.

O que eu preciso fazer e não estou conseguindo é o seguinte:

Preciso saber quantas vezes cada valor aparece na tabela. Se possível em ordem...

O que eu estava fazendo até agora é dar um SELECT DISINCT, pegar os valores que aparecem, montar um for e ir fazendo SELECT COUNT(id) WHERE campo=$valor

Entendeu, mais ou menos, o que eu estou tentando fazer?

Link para o comentário
Compartilhar em outros sites

  • 0

/* Ah sim mas num tôw enxergando o porque do distinct acho que ai o ideal seria fazer um count mesmo deixa eu ver se te arrumo a parada se conseguir te mando */

mas em princípio usaria


SELECT  nome, COUNT (nome) AS TOTAL 
       FROM tabela 
     GROUP BY
               nome 
                 HAVING COUNT (nome) > 2 

um exemplo ou seja conta as repetições e pega repetições maiores que 2

*/

Link para o comentário
Compartilhar em outros sites

  • 0

/* No count tem que haver o GROUP BY senão não conta nada pois é uma função de agregação ou seja os campos serão agrupados quando se usa o GROUP BY não se usa WHERE logo a cláusula HAVING para substituição do WHERE */

PS aceita order by sim :


SELECT  nome, COUNT (nome) AS TOTAL 
      FROM tabela 
    GROUP BY   nome                 
    order by nome desc 

veja se não trará em ordem decrescente !!!!

Link para o comentário
Compartilhar em outros sites

  • 0
/* No count tem que haver o GROUP BY senão não conta nada pois é uma função de agregação ou seja os campos serão agrupados quando se usa o GROUP BY não se usa WHERE logo a cláusula HAVING para substituição do WHERE */

PS aceita order by sim :


SELECT  nome, COUNT (nome) AS TOTAL 
      FROM tabela 
    GROUP BY   nome                 
    order by nome desc 

veja se não trará em ordem decrescente !!!!

Cara, na boa, sou meio lerdo.

Não entendi o porque do GROUP BY ter que ser usado com MAX, MIN e COUNT...

Explica como se eu tivesse 8 anos.. biggrin.gif

Link para o comentário
Compartilhar em outros sites

  • 0

/* Não o GROUP BY não precisa ser usado com MAX MIN mas sim com o COUNT pois é uma função que agrega então se colocar digamos assim :

SELECT  nome, COUNT (nome) AS TOTAL 
     FROM tabela 
   
Ocorrerá erro pois ele pedirá o GROUP BY para agregar então usamos
SELECT  nome, COUNT (nome) AS TOTAL 
     FROM tabela 
     GROUP BY nome 
      ORDER BY DESC 
   

No manual está implícito que não se usa WHERE nessas condições mas sim HAVING mas como sou teimoso fiz isso no PARADOX ou seja usei WHERE e adivinha funfo não sei porque , talvez o PARADOX não tenha total integridade sei - lá mas o certo é HAVING manja ?

T+

*/

Link para o comentário
Compartilhar em outros sites

  • 0

Grande gladiador, acho que você conseguiu me fazer entender esse esquema do GROUP BY! happy.gif

Fiz da seguinte forma:

SELECT name,COUNT(id) as ammount FROM tabela GROUP BY name ORDER BY ammount DESC

Isso vai me retornar os resultados ordenados de acordo com as repetições, quanto mais aparecer aquele registro na tabela, antes ele vai ser retornado no resultado da query... smile.gif

Muito obrigado de novo, gladiador. Quando o assunto é Database não tem pra ninguém, você é o cara! laugh.gif

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...