Cela semble être la voie à suivre :
SELECT
A.answer_id
,C1.color_name AS favorite_color_name
,C2.color_name AS least_favorite_color_name
,C3.color_name AS color_im_allergic_to_name
FROM tbAnswers AS A
INNER JOIN tbColors AS C1
ON A.favorite_color = C1.color_code
INNER JOIN tbColors AS C2
ON A.least_favorite_color = C2.color_code
INNER JOIN tbColors AS C3
ON A.color_im_allergic_to = C3.color_code
Plutôt que "stupide", je dirais qu'il s'agit d'une requête assez standard. Cela suppose également que toutes les colonnes auront une valeur valide. Sinon, remplacez tous les INNER JOIN par des LEFT JOIN