Перебор всех дат в диапазоне - либо средствами клиента, либо заранее создать календарную таблицу, содержащую все даты, скажем, этого века. Запрос по одной дате:
SELECT `t2`.`id`, IFNULL(`t2`.`field1`, `t1`.`field1`), IFNULL(`t2`.`field2`, `t1`.`field2`), ...
FROM `table1` AS `t1`
LEFT JOIN `table2` AS `t2` ON `t2`.`id` = `t1`.`id` AND `t2`.`date` = :date
WHERE `t1`.`id` = :id
Запрос при наличии таблицы дат:
SELECT `c`.`date`, `t2`.`id`, IFNULL(`t2`.`field1`, `t1`.`field1`), IFNULL(`t2`.`field2`, `t1`.`field2`), ...
FROM `calendar` AS `c`
LEFT JOIN `table1` AS `t1` ON `t1`.`id` = :id
LEFT JOIN `table2` AS `t2` ON `t2`.`id` = :id AND `t2`.`date` = `c`.`date`
WHERE `c`.`date` BETWEEN :start_date AND :end_date