Obter toda a data do mês junto com os dados da tabela

Eu tenho duas mesasuser_profile etracked_search. ouser_profile tabela possui detalhes do usuário etracked_search rastreia as pesquisas feitas por cada usuário.

Sempre que um usuário faz uma pesquisa, essa entrada é inserida notracked_search mesa. Se nada for pesquisado em uma data específica, nada será adicionado emtracked_search.

Preciso desenvolver um relatório em que preciso mostrar todos os dias do mês quantos usuários fizeram pesquisas.

Por exemplo:

CREATE TABLE tracked_search (
    id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    created DATE,
    user_id int NOT NULL
);

INSERT INTO tracked_search(created, user_id) VALUES
('2017-10-01', 1000),
('2017-10-01', 1000),
('2017-10-01', 2000),
('2017-10-01', 3000),
('2017-10-01', 4000),
('2017-10-04', 1000),
('2017-10-04', 2000),
('2017-10-04', 2000),
('2017-10-04', 2000),
('2017-10-04', 2000),
('2017-10-04', 3000),
('2017-10-31', 1000),
('2017-10-31', 2000),
('2017-10-31', 3000),
('2017-10-31', 4000),
('2017-10-31', 5000);

Saída desejada:

Date       user_count 
2017-10-01    4
2017-10-02    0
2017-10-03    0
2017-10-04    3
2017-10-05    0
...
2017-10-30    0
2017-10-31    5

Eu escrevi a seguinte consulta

SELECT ts.created , count( distinct ts.user_id) FROM tracked_search ts, user_profile u
 WHERE ts.created>=(CURDATE()-INTERVAL 1 MONTH) AND u.id = ts.user_id
 group by ts.created;

mas eu entendo

Date       user_count 
2017-10-01    4
2017-10-04    3
2017-10-31    5

Preciso imprimir todos os valores dos dias, se não houver entrada para uma data específica, deve ser zero.

Eu estou usando o MySQL.

questionAnswers(3)

yourAnswerToTheQuestion