Requete de date SQL

Discussion dans 'Web, design' créé par DeScH, 19 Août 2007.

Statut de la discussion:
Fermée.
  1. Offline
    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
    DeScH, 19 Août 2007
    #1
  2. Offline
    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.
    moustic, 19 Août 2007
    #2
  3. Offline
    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)
    kokotchY, 20 Août 2007
    #3
  4. Offline
    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";
    DeScH, 20 Août 2007
    #4
  5. Offline
    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";
    DeScH, 20 Août 2007
    #5
  6. Offline
    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.
    kokotchY, 20 Août 2007
    #6
  7. Offline
    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.
    Bartdude, 21 Août 2007
    #7
Statut de la discussion:
Fermée.