statistiques et multi select

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : statistiques et multi select

par ouckileou » 14 janv. 2007, 14:21

Il manque le END

Je n'ai rien testé, j'ai repris ça dans Textpad

par jojolapine » 14 janv. 2007, 14:19

Merci ;-)
ça fonctionne, j'obtient ceci:

Code : Tout sélectionner

nbre_connec heure minutes 1 10 15 1 14 30 1 23 00 1 23 15
merci bien re[résolu]

par Hubert Roksor » 14 janv. 2007, 14:17

"END" manquant, corrigé.

par jojolapine » 14 janv. 2007, 14:09

c'est vrai que ça serait plus simple, mais je ne comprend pas trop pourquoi j'ai une erreur avec ton code... :(
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS minutes FROM logs WHERE id_pseudo = 2 GROUP BY heure , minutes LIMIT 0, ' at line 1

par ouckileou » 14 janv. 2007, 13:31

Tu peux peut-être décomposer plutôt que de répéter chaque combinaison...

Déjà pour les tranches sur l'heure, tu peux grouper directement sur le résultat de "HOUR()", puis faire des tranches de 15 minutes.

Code : Tout sélectionner

SELECT COUNT(*) AS nbre_connec, HOUR(TIME(date_connec)) AS heure, CASE WHEN MINUTE(TIME(date_connec))<=15 THEN "00" WHEN MINUTE(TIME(date_connec))<=30 THEN "15" WHEN MINUTE(TIME(date_connec))<=45 THEN "30" WHEN MINUTE(TIME(date_connec))<60 THEN "45" END AS minutes FROM logs WHERE id_pseudo = 2 GROUP BY heure, minutes;
J'ai viré les ` qui sont inutiles

par jojolapine » 14 janv. 2007, 13:20

merci d'avoir déja eu le problème ;-)
Bon ça à l'air de marcher...
j'ai fait ceci:

Code : Tout sélectionner

SELECT COUNT(*) AS nbre_connec, CASE WHEN HOUR(TIME(`date_connec`)) <= 1 AND MINUTE(TIME(`date_connec`))<=15 THEN "000" WHEN HOUR(TIME(`date_connec`)) <= 1 AND MINUTE(TIME(`date_connec`))<=30 THEN "015" WHEN HOUR(TIME(`date_connec`)) <= 1 AND MINUTE(TIME(`date_connec`))<=45 THEN "030" WHEN HOUR(TIME(`date_connec`)) <= 1 AND MINUTE(TIME(`date_connec`))<60 THEN "045" WHEN HOUR(TIME(`date_connec`)) <= 2 AND MINUTE(TIME(`date_connec`))<=15 THEN "100" WHEN HOUR(TIME(`date_connec`)) <= 2 AND MINUTE(TIME(`date_connec`))<=30 THEN "115" WHEN HOUR(TIME(`date_connec`)) <= 2 AND MINUTE(TIME(`date_connec`))<=45 THEN "130" WHEN HOUR(TIME(`date_connec`)) <= 2 AND MINUTE(TIME(`date_connec`))<60 THEN "145" etc ELSE "2345" END AS heure FROM logs WHERE id_pseudo = 2 GROUP BY heure;
bon c'est un peu brut mais en même temps, je sais pas si je vais garder la précision des minutes... :-k
vais peut-être me restreindre aux heures ça sera moins lourd :)
je vais essayer en tout cas je crois que je peut mettre résolu!

par ouckileou » 13 janv. 2007, 21:32

Regarde ce sujet, j'avais voulu faire un peu la même chose : http://www.phpfrance.com/forums/voir_su ... te-tri.php

(la solution que j'avais mise en place est dans le dernier post)

statistiques et multi select

par jojolapine » 13 janv. 2007, 17:08

bonjour à tous,
J'ai actuellement une table de logs qui se présente de la sorte:

Code : Tout sélectionner

id | id_pseudo | date_connec | date_deco | ip ------------------------------------------------------------------------ auto | id externe | datetime | datetime | ip increment | | | |
et je soiterai pouvoir récupérer le nombre d'occurences d'un id_pseudo donné pour chaque tranche horaire...
jusqu'a présent, je faisait comme ça:
SELECT 
    count(*) as `nb` 
FROM 
    `logs` 
WHERE 
    HOUR(TIME(`date_connec`)) >= ".$i." AND 
    MINUTE(TIME(`date_connec`))>=".($j*$pas)." AND 
    HOUR(TIME(`date_connec`)) < ".($i+1)." AND
    MINUTE(TIME(`date_connec`))<".($j*$pas+$pas)." AND
    `id_pseudo` ='x'
donc je mettait cette requête dans une boucle et faisait varier les paramètre pour récupérer sur chaque tranche horaire de $pas minutes...
Et je me demandai s'il n'y aurai pas un moyen de faire mieu...
Merci d'avance