Похоже (для этого сообщества и потому, что я не смог найти никаких примеров хранимых процедур, использующих наборы результатов из других хранимых процедур в качестве таблиц в новых таблицах выбора), что mysql либо не поддерживает это, либо что это нелепо сложноделать то, что я надеялся сделать.
Поэтому вместо вызова хранимых процедур я скопировал запросы в эту последнюю процедуру.
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_team_stats_change`(
IN team_id INT
)
BEGIN
SELECT SUM(start_weight) AS start_weight,
SUM(start_body_fat) AS start_body_fat,
SUM(current_weight) AS current_weight,
SUM(current_body_fat) AS current_body_fat,
SUM(weight_change) AS weight_change,
SUM(body_fat_change) AS body_fat_change FROM (
SELECT ls.person_id,
fs.weight AS start_weight, fs.body_fat AS start_body_fat,
ls.weight AS current_weight, ls.body_fat AS current_body_fat,
fs.weight - ls.weight AS weight_change, fs.body_fat - ls.body_fat AS body_fat_change
FROM
(SELECT ttd.person_id, bs.weight, bs.body_fat, bs.test_date
FROM body_stats AS bs
JOIN
((SELECT pbs.person_id, min(bs.test_date) AS first_test, max(bs.test_date) AS last_test
FROM body_stats AS bs,
person_body_stats AS pbs,
team_member AS tm,
team AS t
WHERE t.team_id = team_id
AND tm.team_id = t.team_id
AND tm.person_id = pbs.person_id
AND pbs.body_stats_id = bs.body_stats_id
AND tm.start_date bs.test_date
AND bs.test_date >= t.starting_date
GROUP BY person_id) AS ttd,
person_body_stats AS pbs)
ON bs.test_date = ttd.first_test
AND pbs.person_id = ttd.person_id
AND pbs.body_stats_id = bs.body_stats_id) AS fs,
(SELECT ttd.person_id, bs.weight, bs.body_fat, bs.test_date
FROM body_stats AS bs
JOIN
((SELECT pbs.person_id, min(bs.test_date) AS first_test, max(bs.test_date) AS last_test
FROM body_stats AS bs,
person_body_stats AS pbs,
team_member AS tm,
team AS t
WHERE t.team_id = team_id
AND tm.team_id = t.team_id
AND tm.person_id = pbs.person_id
AND pbs.body_stats_id = bs.body_stats_id
AND tm.start_date bs.test_date
AND bs.test_date >= t.starting_date
GROUP BY person_id) AS ttd,
person_body_stats AS pbs)
ON bs.test_date = ttd.last_test
AND pbs.person_id = ttd.person_id
AND pbs.body_stats_id = bs.body_stats_id) AS ls
WHERE ls.person_id = fs.person_id
) AS delta;
END