Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) SQL para selecionar dados por semana


csilva

Pergunta

Amigos, estou usando essa SQL para buscar textos mais lido da semana, mas não retorna resultado algum. Será que alguém poderia dar uma luz? É uma emergência, para um trabalho. Obrigado.

<?php 

$sql = "SELECT SQL_CACHE * FROM artigos 
WHERE (YEAR(data) = YEAR(now())) 
and (MONTH(data) = MONTH(now())) 
and (WEEK(data) = WEEK(NOW())) 
ORDER BY visitas DESC LIMIT 10";

      $query = mysql_query($sql);
      while($dados = mysql_fetch_array($query, MYSQL_ASSOC)) { 

       $dados['id'];
       $dados['autor'];
       $dados['data'];
       $dados['titulo'];
           $dados['visitas'];

?>
<?php echo $dados['autor']; ?> - <?php echo $dados['titulo']; ?> - <?php echo $dados['visitas']; ?>
<?php } />

Editado por Denis Courcy
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Pelo que testei sua query retorna sim.

O que está acontecendo é que ela está "sentando" e isto está acontecendo porque sua cláusula where está gerando "table scan".

Verifique se há indice para o atributo "data" data tabela "artigos". Se não houver, crie.

Teste se esta cláusula where é melhor

SELECT SQL_CACHE * FROM artigos
WHERE  data BETWEEN DATE_SUB(now(), INTERVAL 7 DAY) AND now()
ORDER BY visitas DESC LIMIT 10;

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...