Я использую отчеты графа для выбора ниже. База данных MySQL содержит только активные записи в базе данных, поэтому, если в базе данных нет записей с X часов до Y часов, которые выбирают, они ничего не возвращают. Поэтому в моем случае мне нужно, чтобы выбор возвращал значения Paypal нулевые, а также никакой активности в базе данных. И я не понимаю, как использовать функцию UNION
или заново создать выбор, чтобы получить нулевые значения, если в базе данных не было зафиксировано ни одного времени. Не могли бы вы помочь?Как вернуть нулевые значения, если ничего не было записано в интервале времени?
select STR_TO_DATE (DATE_FORMAT(`acctstarttime`,'%y-%m-%d %H'),'%y-%m-%d %H')
as '#date', count(*) as `Active Paid Accounts`
from radacct_history where `paymentmethod` = 'PayPal'
group by DATE_FORMAT(`#date`,'%y-%m-%d %H')
При запуске выберите выход:
Но мне нужно, если нет значения между 2016-07-27 07:00:00 и 2016-07-28 11:00:00, то в каждый час он должен показывать ноль активных счетов так:
Needed output with no values every hour
я создал такие выберите ниже, но это не ставьте на каждый час нулевое значение, как мне нужно. показывая большой зазор между 12 Sep и 13 Sep в любом случае, но должны быть нулевые значения каждый час
(выберите STR_TO_DATE (DATE_FORMAT (acctstarttime
, '% y-% m-% d% H'), '% Y-% m-% d% Н ') как '#date', граф (PaymentMethod) в качестве Active Paid Accounts
от radacct_history где paymentmethod
<> 'PayPal' группа по DATE_FORMAT (#date
,' % Y-% m-% d% H ')) union ALL (выберите STR_TO_DATE (DATE_FORMAT (acctstarttime
,'% y-% m-% d% H '),'% y-% m-% d% H ') as' #date ', 0 as Active Paid Accounts
от radacct_histo ry где paymentmethod
<> 'PayPal' группа DATE_FORMAT (#date
, '% y-% m-% d% H'));
Пример данных и желаемого результата будет очень полезен для получения соответствующего ответа в ближайшее время. – Susang
Я загрузил выходы в свой ответ. –