2011-10-19 1 views
0

Ma tâche consiste à extraire les données regroupées par heures. Je le fais en émettant une commande similaire à celui ci-dessous:mySQL: Insertion automatique des lignes entre les intervalles dans les résultats

SELECT DISTINCT 
    COUNT(player_id) AS `count`, 
    YEAR(date_created) AS `year`, 
    MONTH(date_created) AS `month`, 
    DAY(date_created) AS `day`, 
    HOUR(date_created) AS `hour` 

FROM `logs` 

WHERE 
    (controller='player') AND 
    (action='updatehash') AND (date_created >= FROM_UNIXTIME(1317916800)) AND 
    (date_created <= FROM_UNIXTIME(1318003199)) 

GROUP BY `year`, `month`, `day`, `hour` 

ORDER BY `year` ASC, `month` ASC, `day` ASC, `hour` ASC 

qui renvoie des résultats similaires à celui-ci:

Array 
(
    [0] => Array 
     (
      [count] => 2 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 16 
     ) 

    [1] => Array 
     (
      [count] => 5 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 17 
     ) 

    [2] => Array 
     (
      [count] => 21 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 18 
     ) 

    [3] => Array 
     (
      [count] => 3 
      [year] => 2011 
      [month] => 10 
      [day] => 7 
      [hour] => 19 
     ) 

) 

Le résultat semble être OK seulement que je dois avoir le retour les résultats pour les dernières 24 heures, y compris les heures sans valeur de comptage. Donc, basé sur le résultat que j'ai posté ci-dessus, il devrait renvoyer les résultats du 7 octobre 19h00 au 6 oct. 18h00.

Est-ce possible?

Merci à tous! ;)

Répondre

1

Courte réponse, ne pas utiliser ce SQL, vous ne rejoignez pas la table, donc vous ne pouvez pas utiliser la technique de "jointure à gauche". c'est parce que vous n'avez vraiment aucun enregistrement de notation dans cette période de temps.

Vous pouvez soit essayer de créer une approche FONCTION ou insérer au moins un enregistrement chaque heure en utilisant votre langage de programmation.

+0

Oui, je le pensais. Cela a confirmé mes spéculations. En fait, j'ai déjà créé une fonction pour itérer dans deux plages de dates/heures et inséré chaque ligne du résultat correspondant à chaque date/heure correspondante. Merci pour l'aide, Tommy. Upped + et accepté! –

Questions connexes