У меня возникла ситуация, когда мне нужно захватить данные за последние 30 дней и получить все даты, даже если эти данные отсутствуют в mysql для данных дат.Как выбрать последние 30 дней в MySQL, даже даты нет в mysql?
Мой текущий запрос - это что-то вроде этого. LastUpdated столбец временной метки
SELECT Date(a.lastUpdated), count(*)
FROM table1 a
LEFT JOIN table2 b on (a.pgid = b.prod_id)
WHERE Date(lastUpdated) BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
GROUP BY Date(a.lastUpdated);
Это возвращаемый результат как этот
Date(a.lastUpdated) count(*)
2016-03-23 1
2016-03-24 14
2016-03-30 65
2016-03-31 1
2016-04-02 1
Мой вопрос, если его можно перечислить все даты, даже если данные не в MySQL. Или любое другое обходное решение. Я использую PHP 7.0.
Я огляделся вокруг, но не нашел ничего, что связано с моими требованиями.
нет простого способа ИМХО. Вы можете найти этот полезный, хотя и не имеющий прямого отношения: http://stackoverflow.com/questions/1046865/mysql-select-all-dates-in-a-range-even-if-no-records-present – Gogol
, если ваш данные не имеют информации, которая может использоваться для выбора и фильтрации, тогда у нее нет информации, которая может быть использована для выбора и фильтрации. Представьте, что вы ничего не знаете о том, что данные * о *, и вас попросили вручную просмотреть его и найти записи за последние 30 дней. Вы находите запись без даты. Чем ты занимаешься? Если ваш инструктор не расскажет вам, как лечить беспилотные записи, вам придется их игнорировать. То же самое - либо сказать, что должно произойти, либо SQL игнорирует их. –
Определить 'данные нет в mysql' –