manoaj 12 Denunciar post Postado Julho 12, 2015 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
ESerra 744 Denunciar post Postado Julho 12, 2015 Qual o SGBD? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 12, 2015 Veja se ajuda http://forum.imasters.com.br/topic/538477-consulta-com-ordem-maior-para-menor/ Compartilhar este post Link para o post Compartilhar em outros sites
Adnilton 7 Denunciar post Postado Julho 12, 2015 Acho que seria assim SELECT ge.*, us.* FROM genero as ge , users as us WHERE ge.id_genero=us.id ORDER BY ge.id_genero DESC Se preferir pode usar o INNER JOIN . Compartilhar este post Link para o post Compartilhar em outros sites
manoaj 12 Denunciar post Postado Julho 12, 2015 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
Motta 645 Denunciar post Postado Julho 12, 2015 Quase igual ao meu exemplo : carro >> genero e peças >> users Compartilhar este post Link para o post Compartilhar em outros sites
lucaswxp 22 Denunciar post Postado Julho 12, 2015 **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
lucaswxp 22 Denunciar post Postado Julho 12, 2015 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
manoaj 12 Denunciar post Postado Julho 13, 2015 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
Motta 645 Denunciar post Postado Julho 13, 2015 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
manoaj 12 Denunciar post Postado Julho 13, 2015 @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