mySQL: автоматическая вставка строк между интервалами в результатах - PullRequest
0 голосов
/ 19 октября 2011

Моя задача - извлечь данные, сгруппированные по часам. Я делаю это с помощью команды, аналогичной приведенной ниже:

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 

Возвращает результаты, аналогичные приведенным ниже:

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
        )

)

Результат выглядит удовлетворительным только потому, что мне нужно, чтобы он возвращал результаты за последние 24 часа, включая часы, в которых значения не учитывались Таким образом, основываясь на результатах, которые я разместил выше, он должен возвращать результаты с 7 октября 19:00 до 6 октября 18:00.

Возможно ли это?

Спасибо всем! ;)

1 Ответ

1 голос
/ 21 октября 2011

Краткий ответ, не используя этот SQL, вы не присоединяетесь к таблице, поэтому вы не можете использовать технику «левого соединения».это потому, что у вас действительно нет записи журнала за этот период времени.

Возможно, вы можете либо попытаться создать подход FUNCTION, либо вставлять хотя бы одну запись каждый час, используя ваш язык программирования.

...