結論: DUALを使用した
ちょっと悩んだポイントとしては、それぞれが独立なマスタなためどれか一つを主としてJOINする方式では主としたテーブルに対するWHERE句が思い浮かばなかった。
存在しないと全体の結果が空になる。
SELECT HOGEHOGE_MEI, HUGOHUGO_MEI
FROM M_HOGEHOGE
LEFT JOIN M_HUGOHUGO ON HUGOHUGO_CODE = :HUGOHUGO_Code
WHERE HOGEHOGE_CODE = :HOGEHOGE_Code
色々整形しているうちに、結合したマスタの数だけ行数が出てきたり(n行目はテーブルnの名称以外はNULL)とうまくいかない。
↓
常に1行の結果を返すというDUALを使い、そこにそれぞれのマスタをJOINする方式に変更。
SELECT
HOGEHOGE_MEI
, HUGOHUGO_MEI
, HOGAHOGA_MEI
, HUGIHUGI_MEI
, HOGUHOGU_MEI
FROM (
SELECT 1
, T1.HOGEHOGE_MEI
, T2.HUGOHUGO_MEI
, T3.HOGAHOGA_MEI
, T4.HUGIHUGI_MEI
, T5.HOGUHOGU_MEI
FROM DUAL
LEFT JOIN M_HOGEHOGE T1 ON T1.HOGEHOGE_CODE = :HOGEHOGE_Code
LEFT JOIN M_HUGOHUGO T2 ON T2.HUGOHUGO_CODE = :HUGOHUGO_Code
LEFT JOIN M_HOGAHOGA T3 ON T3.HOGAHOGA_ID = :HOGAHOGA_Id
LEFT JOIN M_HUGIHUGI T4 ON T4.HUGIHUGI_ID = :HUGIHUGI_Id
LEFT JOIN M_HOGUHOGU T5 ON T5.HOGUHOGU_ID = :HOGUHOGU_Id
望んだとおりの出力が得られた。
存在しないコードのもののみNULLとなり、一行で全部帰ってくる。
もっといい方法とか、DUALなしでもうまくやる方法とありそう・・・。