Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

manoaj

Ordenar resultados

Recommended Posts

Olá pessoal boa tarde!

Bom, minha dúvida é a seguinte, tenho uma consulta com uma subquery que é a seguinte:

("SELECT * FROM genero WHERE id IN (SELECT id_genero FROM users)");

explicando.:

 

essa consulta me retorna os gêneros que tem algum usuário cadastrado nesse determinado gênero.

No caso ela só me retorna os gêneros que tem usuários cadastrados nele, ate ai tudo bem está fazendo o que eu quero.

 

Dúvida->

 

A minha dúvida é como ordenar o resultado dessa consulta de acordo com a quantidade de usuários cadastrados em cada genero, por exemplo.

 

tenho 3 gêneros

 

1, este gênero tem 10 usuários cadastrados.

2, este gênero tem 11 usuários cadastrados.

3, este gênero tem 15 usuários cadastrados.

 

e quero exibir estes gêneros de acordo com a quantidade de usuários em cada, de forma decrescente.

 

isso é possivel?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O banco é mysql,

motta dei uma olhada no link e acredito é exatamente isso, pode me dar uma força para implementar a logica no meu codigo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quase igual ao meu exemplo : carro >> genero e peças >> users

Compartilhar este post


Link para o post
Compartilhar em outros sites

**Remover esse post moderação, pf**

Pelo que entendi.

 

Primeiro a query para fazer a contagem de usuário:

(SELECT COUNT(*) FROM users WHERE id_genero = genero.id) as contagem

Agora você coloca essa query dentro da sua listagem assim:

SELECT
   *,
   (SELECT COUNT(*) FROM users WHERE id_genero = genero.id) as contagem
FROM genero
WHERE id IN (SELECT id_genero FROM users)
ORDER BY contagem DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi.

 

Primeiro a query para fazer a contagem de usuário:

 

 

(SELECT COUNT(*) FROM users WHERE id_genero = genero.id) as contagem

 

Agora você coloca essa query dentro da sua listagem assim:

 

 

SELECT
   *,
   (SELECT COUNT(*) FROM users WHERE id_genero = genero.id) as contagem
FROM genero
WHERE id IN (SELECT id_genero FROM users)
ORDER BY contagem DESC
Agora você possui um novo campo chamado "contagem" no seu resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então minha query ficaria assim.

SELECT *, (SELECT COUNT(*) FROM users WHERE id_genero = genero.id) as contagem FROM genero WHERE id IN (SELECT id_genero FROM users) ORDER BY contagem DESC.

 

Só uma dúvida quanto ao campo genero.id que esta na condição do select de contagem, porque ele é colocado desta maneira genero.id?

 

Sem querer abusar da paciência de vcs rsrs, é que estou tentando aprender um pouco mais sobre o assunto, desculpem pela minha ignorância :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se usa istonpara qualificar o campo em geral quando duas tabelas tem campos com o mesmo nome ou quando se instancia (chama) uma tabela duas vezes (autorrelacionar).

Compartilhar este post


Link para o post
Compartilhar em outros sites

@lucaswxp, @Motta, muito obrigado pela atenção de vocês dois e por terem resolvido meu problema. e obrigado a todos que contribuíram no tópico.

 

o código funcionou perfeitamente, acredito que vá ajudar outras pessoas que estejam com a mesma duvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.