oracle - 在同一个表中,sql执行多个列的内部 Join

  显示原文与译文双语对照的内容

我有一个场景,我有点跟不上。 假设我有一个颜色调查,我有一个表格的颜色数据,另一个为人的答案。

tbColors


color_code, color_name


 1, 'blue'


 2, 'green'


 3, 'yellow'


 4, 'red'



tbAnswers


answer_id, favorite_color, least_favorite_color, color_im_allergic_to


 1, 1, 2 3 


 2, 3, 1 4


 3, 1, 1 2


 4, 2, 3 4



显示我想写一个显示答案表但使用tbColors中的color_name列的选择。

我理解"最愚蠢"的方法: 在 from section命名 tbColors 3 次,使用不同的别名替换每个列。

一个愚蠢的方法?

时间: 原作者:

这似乎是要走的路:


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



我宁愿冒险,而不是"愚蠢地",这是一个非常标准的查询。 这也假定所有列都有一个有效值。 否则,用左联接替换所有内部联接

...