Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá boa tarde,
Com esse script pego os mais comentados geral.
>
SELECT COUNT(*), P.TituloNotUsu
FROM comentarionotusu AS C, notusuario AS P
WHERE C.IdNotUSu = P.IdNotUsu
GROUP BY P.IdNotUsu
ORDER BY COUNT(*) DESC")
Só que agora eu gostaria de fazer um esquema que pegasse o post mais comentado das últimas 50 linhas, e não to conseguindo.Dos últimos 50 comentarios eu gostaria de saber qual foi o mais comentado..
Alguem tem uma dica? flw obrigado.
O limit não serve, porque o limite mostra ordenado os registros com maior quantidade em ordem DESC
seleciona os registros - conta - agrupa levando em consideração todas as linhas, ai sim ele dá o limite de IDS que serão mostrados
Só que eu preciso tipo que contar as linhas separadas sem 'agrupar' pra ele mostrar o LIMITE como sendo o mais acessado dentro das últimas linhas.
Tentei explicar o maximo possivel. Obrigado
Eu realmente estou confuso, se você quiser fazer em uma consulta direto creio estar correto.
o LIMIT vai pegar seus resultados e trazer os 50 últimos se você mandou ordenado corretamente certamente você terá os dados desejados.
agora caso de uma consulta separada deseje retornar os últimos você teria que ter a data para jogar em um array e ordenar usando asort ou rsort
@Vinicius Rangel Creio que ele quer apenas um registro que está nos 50 últimos registros. Por isso ele primeiro deve separar os 50 últimos registros e depois retirar somente esse único registro.
Utilize views ou functions(não tenho certeza no MySQL).
No MsSQL, me dói dizer isso, seria muito fácil de fazer, pois você pode criar "views" através de subquery.
Vamos para sua View.
Você precisa dos 50 últimos registros das notícias. Eu imagino que seja por ordem de data de cadastro.
O nome da minha VIEW será ultimas50noticias.
"CREATE VIEW AS ultimas50noticias AS
SELECT
titulo,
descricao,
data
FROM
noticia
ORDER BY
data DESC
LIMIT 50;"
Pronto, minha view está criada. Agora basta você realizar a consulta através da View.
"SELECT * FROM ultimas50noticias WHERE ...."
Para título de curiosidade, caso fosse MsSQL (ou outro SGBD com suporte similar), seria assim:
"SELECT
*
FROM
(SELECT * FROM noticia ORDER BY data DESC LIMIT 50)
WHERE
...."
é só usar o LIMIT agora.
SELECT COUNT(*), P.TituloNotUsu
FROM comentarionotusu AS C, notusuario AS P
WHERE C.IdNotUSu = P.IdNotUsu
GROUP BY P.IdNotUsu
ORDER BY COUNT(*) DESC") LIMIT 50