Random selection with a "complex" subset structure
The steps to perform are the following:
  
  
  Pick 1 task randomly (e.g. Eat)
  Retrieve all combinations that contain that task (e.g. all    combination about Eat)
  Pick 1 mood randomly from the list of combination retrieved in step 2
  Retrieve all combinations from step 2 list that contain step 3 mood
  Pick 1 place randomly from remained combination
  Find the randomly selected combination
  


WITH 
cte1 AS (SELECT * 
         FROM task 
         ORDER BY RAND() LIMIT 1),
cte2 AS (SELECT mood.* 
         FROM link_table 
         JOIN mood USING (mood_id)
         JOIN cte1 USING (task_id)
         ORDER BY RAND() LIMIT 1)
SELECT cte1.*, cte2.*, place.*
FROM link_table
JOIN cte1 USING (task_id)
JOIN cte2 USING (mood_id)
JOIN place USING (place_id)
ORDER BY RAND() LIMIT 1


fiddle

PS. It is possible that the query will return no record.

PPS. There is more simple alternative:

WITH cte AS (SELECT * 
             FROM link_table
             ORDER BY RAND() LIMIT 1)
SELECT task.*, mood.*, place.*
FROM cte
JOIN task USING (task_id)
JOIN mood USING (mood_id)
JOIN place USING (place_id)


fiddle

This variant will never return zero records if link_table is not empty.

But! the chance for each separate record to be returned differs for 1st and 2nd queries...