我有一个场景,我有点坚持。假设我有一个关于颜色的调查,有一个表用于颜色数据,另一个表用于人们的答案。
tbColors
color_code , color_name 1 , 'blue' 2 , 'green' 3 , 'yellow' 4 , 'red'
tb答案
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
对于显示,我想编写一个呈现答案表的SELECT,但要使用tbColors中的color_name列。
我了解做到这一点的“最愚蠢”的方法:在FROM部分中命名tbColors三次,每列替换使用不同的别名。
一种非愚蠢的方式看起来如何?
这似乎是要走的路:
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
而不是“愚蠢”,我敢说这是一个非常标准的查询。这也假定所有列都将具有有效值。否则,将所有INNER JOIN替换为LEFT JOIN