ここでは CASE を使用する必要があると感じていますが、よくわかりません。一般的なテーブルから性別 (m/f) を取得しようとしています。性別に応じて、対応するテーブルからビルドを取得します。たとえば、性別が m の場合、クエリは males テーブルに移動して male_build を選択することでそれを認識している必要があります。私が達成しようとしていることのアイデアを与えるために、サンプルクエリと一緒に出力をまとめました。
members table
member_id | member_name
------------------------
1 Herb
2 Karen
3 Megan
4 Pablo
males table
male_id | member_id | male_build
---------------------------------
1 1 muscular
2 4 fat
females table
female_id | member_id | female_build
-------------------------------------
1 2 thin
2 3 fat
general table
general_id | member_id | sex
-----------------------------
1 1 m
2 2 f
3 3 f
4 4 m
出力は次のようになります。
1. Herb is a muscular male.
2. Karen is a thin female.
3. Megan is a fat female.
4. Pablo is a fat male.
-> query = "SELECT g.general_id, g.member_id, g.sex,
(CASE when g.sex=m THEN SELECT ma.male_build AS build
FROM males ma WHERE ma.member_id=g.member_id,
CASE when g.sex=f THEN SELECT fe.female_build AS build
FROM females fe WHERE fe.member_id=g.member_id),
m.member_name
FROM members m
JOIN members m ON g.member_id=m.member_id
WHERE g.sex='m' OR g.sex='f'";
このタスクの効率的なクエリを探しています。