質問: sqlで抽出可能でしょうか? sqlで抽出可能でしょうか? javaでツールを作成しています。 開発環境はjava 1.4、oracle 10gです。 処理の中にデータベースからレコードを取得する箇所があります。 10,000件のデータを保持する社員テーブル(syain_tbl)から 社員番号(syain_no)をキーに社員名(syain_name)を取得します。 現時点で作成したselect句は以下のとおりです。 select syain_no, syain_name from syain_tbl where syain_no in ('0001','0002','0003') 仮に'0001'と'0003'のレコードがあり、'0002'のレコードがない場合の結果は syain_no syain_name 0001 テスト太郎 0003 テスト三郎 となります。 ですが、実現したいことは 「条件に指定した社員番号のレコードがなかったとしても、結果として取得したい」です。 つまり求めたい結果としては syain_no syain_name 0001 テスト太郎 0002 (null) 0003 テスト三郎 です。 一時表を作成して外部結合させればうまくいきそうですが、 できればddlなしで実現させたいです。 上記のselect句を修正して結果を求めることは可能でしょうか? (where句にある社員番号をin条件にしている箇所は、 一度に複数件のレコードを取得したいので変更はできません)
回答: select syain_no, syain_name from syain_tbl where syain_no in ('0001','0002','0003') union all select syain_no, null from syain_tbl where syain_no not in ('0001','0002','0003')