Good 4 Denunciar post Postado Julho 28, 2014 Tenho uma tabela chamada conteudos, com coluna id, titulo, data, categoria. Quero fazer a listagem de 3 registros agrupado pela coluna categoria. Ex: Categoria 1: título 1 Categoria 1: título 2 Categoria 1: título 3 Categoria 2: título 4 Categoria 2: título 5 Categoria 2: título 6 Categoria 3: título 7 Categoria 3: título 8 Categoria 3: título 9 SELECT * FROM conteudos GROUP BY categoria LIMIT 3 Deu pra entender? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 28, 2014 SELECT categoria , titulo FROM conteudos GROUP BY categoria , titulo Isto !? Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Julho 28, 2014 Não quero agrupar título.. título é algo que sempre vai ser diferente. Esta é uma tabela de notícias.. A query tem que exibir apenas 3 registros de cada categoria.. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Julho 28, 2014 Então amigo, creio que cabe um distinct aí nas categorias limitando por 3 e agrupando. Assim ele trará de cada categoria apenas 1 notícia. Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Julho 29, 2014 Mas o que eu to tentando fazer é exibir 3 notícias de cada categoria.. Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Julho 29, 2014 Fiz uma SQL que te atende, mas fica o aviso, rodei localmente numa tabela com mais de 600000 registros, o tempo de execução dessa query é alto (mesmo com os índices criados), vou deixar a consulta pra que alguém consiga algo a partir dela, ou até quem sabe melhorar seu desempenho. SELECT @CAT categoria_anterior, categoria, id, data, @COUNT:= IF( id_categoria = @CAT, @COUNT+1, 1) cont, @CAT:= id_categoria nova_categoria_anterior FROM ( SELECT categoria, id, data FROM conteudos ORDER BY categoria ASC, data DESC ) v GROUP BY categoria, cont ASC HAVING cont <= 3 Mas certamente alguém terá uma solução. Compartilhar este post Link para o post Compartilhar em outros sites
Good 4 Denunciar post Postado Julho 30, 2014 Não exibiu 3 notícias de cada categoria.. Exibiu como se tivesse com GROUP BY (apenas 1 notícia por cada categoria) :s pelo visto vou ter que fazer na gambiarra mesmo.. <?php $gr = mysql_query("SELECT categoria FROM conteudo GROUP BY categoria ORDER BY id DESC"); while($cat = mysql_fetch_array($gr)){ $noticias = mysql_query("SELECT * FROM conteudo WHERE categoria = '".$cat['categoria']."' ORDER BY id DESC LIMIT 3"); while($noticia = mysql_fetch_array($noticias)){ echo $noticia['titulo']; } } ?> vlw cara Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Julho 30, 2014 Faz a contagem de quantas noticias existem na tabela para cada categoria. SELECT categoria, COUNT( id ) qtd_noticias FROM conteudo GROUP BY categoria ORDER BY categoria ASC Para a SQL que eu fiz, deve haver no mínimo 3 id por categoria. Compartilhar este post Link para o post Compartilhar em outros sites