How about using the following tables (just the info, I assume you can make the sql yourself in detail):
excercises(key as number, name …);
movements(key as number,name …);
muscles(key as as number,name …);
excercises_movements(excercises_key as number,movements_key as number);
excercises_muscles(excercises_key as number,muscles_key as number);
Then do some inner join:
select excercises.,movements.,muscles.* from excercises,movements,muscles,excercises_movements,excercise_movements where
excercises.key=excercises_movements.excercises_key and movements.key=excercises_movements.movements_key and
excercises.key=excercises_muscles.excercises_key and muscles.key=excercises_muscles.emuscles_key
and excercises.key={MYKEY} order by excercises.name,movements.name,muscles.name;
You may want to do an outer join version but that is up to you… And it is up to what you want to do with it…
Your table session:
session(key as number,excercise_key as number);
So now querying a session is thus:
select excercises.,movements.,muscles.* from excercises,movements,muscles,excercises_movements,excercise_movements where
excercises.key=excercises_movements.excercises_key and movements.key=excercises_movements.movements_key and
excercises.key=excercises_muscles.excercises_key and muscles.key=excercises_muscles.emuscles_key
and excercises.key in (select excercises_key from session where session.key={MYKEY})
order by excercises_order,excercises.name,movements.name,muscles.name;
I leave it up to you to add an excercise_order in there if you so wish…