Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Daí gurizada, estou fazendo uma consulta em MySQL só que está me dando uma dor de cabeça tremenda.
A consulta que eu faço é essa:
SELECT * FROM noticias WHERE NOT(categoria=6) AND destaque=1 GROUP BY categoria ORDER BY data DESC
Nessa consulta, se houverem duas noticias da mesma categoria com o mesmo destaque, ele pega a com a data mais antiga, mesmo usando o ORBER BY data DESC
Pelo que eu vi, o problema é com o GROUP BY, ele agrupa por categoria, mas ignora o fato de estar ordenado por data e pega a data mais antiga
Alguém já passou por isso e conseguiu uma solução?
Como eu faria então para retornar os 4 últimos post sem que a categoria deles fossem iguais??? Com o GROUP BY eu consegui... mas não consegui ordenar...Tem uma idéia?
um while dentro do outro resolve, soh nao sei se é a melhor maneira.tipo...um while com groupby pra você pegar a categoria e um while com limit 1 praquela categoria dentro.
" SELECT tabelaA.campo, tabelaB.campo FROM tabela, tabela WHERE tabelaA.campo = tabelaB.campo ORDER BY tabelaA.campo LIMIT 1;";Talvez um loop, retornando um registro, excluindo as categorias já impressas.Talvez de certo, vou testar assim e posto o resultado
Gurizada, resolvi da seguinte maneira:
$idcat="0,"; //inicio os códigos dos colunistas com um numero inexistente.for ($i=0;$i<4;$i++){$sql=mysql_query("SELECT * FROM noticias WHERE destaque=1 AND NOT(categoria IN ($idcat)) ORDER BY idnot" LIMIT 1);$l=mysql_fetch_array($sql);$idcat.=",$l[categoria]";}
Assim ele só pega os 4 últimas noticias de categorias diferentes
aew!
você soh deve usar o group by quando for gerar algum total.
no seu caso, a SQL deve ser assim:
SELECT * FROM noticias WHERE categoria<>6 AND destaque=1 ORDER BY data DESCretorna todas as noticias com categoria diferente de 6 e que seja destaque por ordem de data decrescente.
caso você queira apenas a ultima noticia use o LIMIT:
SELECT * FROM noticias WHERE categoria<>6 AND destaque=1 ORDER BY data DESC LIMIT 1o limit funciona assim: limit n, onde n é o numero de registros.
[]'s