2014-01-22 2 views
0

исходного запроса:Создать временную таблицу заселенных с датами и LEFT JOIN в `created_at` Колонка - MySQL

// Doesn't return dates with zero value 

SELECT UNIX_TIMESTAMP(created_at) AS DATE, COUNT(tweet_id) AS count 
FROM `tweets` 
WHERE DATE(created_at) > '2012-11-01' 
AND DATE(created_at) <= DATE(NOW()) 
GROUP BY DATE 

Измененный запрос:

// Attempting to return all dates with a value of zero if doesn't exist in `created_at` column 

CREATE TEMPORARY TABLE DateSummary1 (date timestamp) SELECT DISTINCT(DATE(created_at)) as date FROM tweets; 
CREATE TEMPORARY TABLE DateSummary2 (date timestamp, number int) SELECT DATE(created_at) as date, count(*) AS number FROM tweets WHERE DATE(created_at) > '2012-11-01' AND DATE(created_at) <= DATE(NOW()) GROUP BY DATE(created_at) ORDER BY created_at ASC; 
SELECT ds1.date,ds2.number FROM DateSummary1 ds1 LEFT JOIN DateSummary2 ds2 on ds1.date=ds2.date; 

К сожалению, последний результат не предоставляет мне на даты с нулевыми значениями, как я ожидал. Что я не замечаю? Я уверен, что это логическая ошибка, но я не уверен, где моя логика сработала. Я так далеко не читаю обильные потоки на SO, Google и т. Д., Но не уверен, как преодолеть это последнее препятствие.

Пример возвращенных меток времени, используя предложение jcho360 в:

1387286811 
1387286812 
1387286813 
1387286815 
1387286820 
+0

Я не совсем понятно, на что вы пытаетесь сделать. Что вы подразумеваете под датами с «значением нуля», как указано в комментариях? Почему вы имеете дело с отметками времени Unix? Почему вы работаете со временными таблицами? –

ответ

0

Попробуйте

SELECT UNIX_TIMESTAMP(created_at) AS DATE, COUNT(tweet_id) AS count 
FROM `tweets` 
WHERE (DATE(created_at) > '2012-11-01' 
AND DATE(created_at) <= DATE(NOW())) 
or DATE(created_at) = date ('000-00-00') //I added this Line 
GROUP BY DATE 
+0

К сожалению, он все еще просто возвращает набор данных без добавления отсутствующих дат и соответствующего значения «0». Спасибо за мысль. – DroBuddy

+0

попробуйте еще раз, я отредактировал. – jcho360

+0

По какой-то причине он по-прежнему пропускает несуществующие времена в результирующем наборе. Я преобразовал временные метки в стандартный формат времени, и он учитывает каждую секунду, поскольку я не делаю DATE_FORMAT на нем в настоящее время. Тем не менее, он пропускает секунды, которые не имеют значения счета. Я в тупике. – DroBuddy