Jump to content
Fórum Script Brasil
  • 0

(Resolvido) SQL para selecionar dados por semana


csilva

Question

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 } />

Edited by Denis Courcy
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...