Я так понимаю, что дата у Вас выводится в виде "день, когда мне дорогу перешёл чёрный кот, месяца возвращения с юга журавлей, третьего года династии Цинь". Иначе непонятно, почему не использовался стандартный тип DATE и зачем нужны таблицы `days`, `months`, `years`. Для времени тоже есть стандартное поле - TIME, ни к чему хранить его в VARCHAR.
А присоединение таблиц - LEFT JOIN
SELECT `w`.`gym`, `t`.`name`, `c`.`name`, `w`.`sttime`, `w`.`entime`
FROM `workout` AS `w`
LEFT JOIN `trainers` AS `t` ON `t`.`id` = `w`.`trainer`
LEFT JOIN `clients` AS `c` ON `c`.`id` = `w`.`client`
WHERE `w`.`date` = CURDATE()
ORDER BY `w`.`sttime`