How about creating a file with the days races and runners in and then using that file in the same way to link to the historic runners (using runner_id) and in turn link to historic_races (joined using the race_id of historic_runners and historic_races) ?
This doesnt give you exactly what you want as Im not sure you can do that in SQL as all rows have the same format, But with the file below you could then write a program to show what in effect are header (current race details) and detail (historical race deatils) data
Assuming you have created a file called todays card which has a row per horse per race with some basic deatils
you can do an sql like this which will give you a row per historic run per horse per todays race
Obviously you can add in more detail to the select part from hru and hra files
select td.*, hra.race_id as Hist_race_id from todays_card td
join historic_runners hru using (runner_id)
join historic_races hra on (hru.race_id = hra.race_id)
order by td.scheduled_time, td.course, td.cloth_number ;