私は少し立ち往生しているシナリオがあります。色に関する調査があり、色データ用のテーブルと人々の回答用のテーブルがあるとします。
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列を使用して、回答テーブルを表示するSELECTを記述します。
「最も愚かな」方法を理解しています:FROMセクションで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
「愚かな」というよりは、これはかなり標準的なクエリだと思います。また、これはすべての列に有効な値があることを前提としています。それ以外の場合、すべての内部結合を左結合に置き換えます