Requete de date SQL

Statut
N'est pas ouverte pour d'autres réponses.

DeScH

AstaLaVista
Hello

Et oui c'est encore moi avec mes questions :)

Je souhaite faire un compteur de visites qui m'affichera les visites des derniers mois et des 15 derniers jours.

Pour ce faire, j'ai 2 champs dans ma table

stats_ip (int(12) Primaire)
stats_date (date 0000-00-00)

Pour ma première requete qui m'affichera les visites des 12 derniers mois, j'ai une piste:
$sql = "SELECT COUNT(*) AS visites_mois FROM ". STATS ." WHERE MONTH(date) = $mois";
Mais cette requete n'en récupère qu'un. Etant donné que je ne veux pas faire 12 requetes de ce type, y a-t-il un meilleur moyen?

Merci
 

moustic

Touriste
remplace WHERE MONTH(date) = $mois

par

group by MONTH(date)

?

A tester, j'suis pas sûr de mon coup trop longtemps que je n'ai plus "joué" avec le SQL.
 

kokotchY

Elite
Il est surement possible de le faire avec un where :
WHERE date >= date-12 mois

Mais c'est le problème de travailler avec des dates "date" et non avec des timestamps.

Avec les timestamps, il suffit de faire WHERE timestamp >= now()-(12*31*24*60*60)
 
1er
OP
DeScH

DeScH

AstaLaVista
Merci pour vos réponses. Et si je travaille en date, comment faire pour récupérer le mois qui a connu le maximum des visites?

J'avais pensé à ca mais ca ne marche pas
$sql = "SELECT MAX(COUNT(*)) AS max_visites_mois FROM ". STATS ." GROUP BY MONTH(date)";

EDIT: c'est bon j'ai trouvé :

$sql = "SELECT MAX(N) AS max_visites_mois FROM (SELECT COUNT(*) AS N FROM ". STATS ." GROUP BY MONTH(date)) T";
 
1er
OP
DeScH

DeScH

AstaLaVista
Elle marche en local, mais pas sur mon hébergeur :s

la syntaxe est mauvaise? :-s

Code:
$sql = "SELECT MAX(N) AS max_visites_mois FROM (SELECT COUNT(*) AS N FROM ". STATS ." GROUP BY MONTH(date)) N";
 

kokotchY

Elite
Tu utilises des sous-requêtes, c'est possible que la version du serveur sql de ton hébergeur ne soit pas assez récente.
 

Bartdude

Touriste
Elle ne marche pas sur ton serveur, c'est à dire ? Plantage ? Message d'erreur ?

Il est possible qu'elle ne renvoie tout simplement pas de résultat car tes données distantes ne sont pas les mêmes que les données locales...première chose à vérifier si tu n'as pas de message d'erreur SQL.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut