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条件にしている箇所は、
一度に複数件のレコードを取得したいので変更はできません)
No.2ベストアンサー
- 回答日時:
select t1.syain_no, t1.syain_name
from syain_tbl t1,
(
select '0001' syain_no from dual
union
select '0002' syain_no from dual
union
select '0003' syain_no from dual
) t2
where t1.syain_no = t2.syain_no(+)
order by t1.syain_no
;
ご回答ありがとうございます。
記述して頂いたSQLを下記のとおりに修正したところ
求めていた結果を得ることができました。
select t2.syain_no, t1.syain_name
from syain_tbl t1,
(
select '0001' syain_no from dual
union
select '0002' syain_no from dual
union
select '0003' syain_no from dual
) t2
where t2.syain_no = t1.syain_no(+)
order by t2.syain_no
No.1
- 回答日時:
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')
ご回答ありがとうございます。
SQLを実行してみましたが、where句で指定した('0001','0002','0003')以外の
'0004'や'0005'などの他のレコードも取得してしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHP MySql ページング 2 2022/09/20 06:38
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sqlplusの処理が途中でとまる
-
[Access]時間帯の重複チェック
-
SELECTで1件のみ取得するには?
-
Date型にNULLをセットしたい V...
-
ORDER BY 半角カナ
-
SQL>UPDATEと同時にその件数を...
-
oracleのinsert select性能
-
Oracleでの文字列連結サイズの上限
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
OracleのSQL*PLUSで、デー...
-
GROUP BYを使ったSELECT文の総...
-
ファイル書込みで一行もしくは...
-
Accessで別テーブルの値をフォ...
-
キーが同じを複数行を1行にま...
-
サブフォームに新規レコードを...
-
Excelでセルの書式設定を使用し...
-
SELECTの結果で同一行を複数回...
-
DataGridViewにてセル以外をク...
-
サブレンジ分割されたNDB(富士...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECTで1件のみ取得するには?
-
Date型にNULLをセットしたい V...
-
SQL>UPDATEと同時にその件数を...
-
oracleのinsert select性能
-
sqlplusの処理が途中でとまる
-
ACCESSのSQLの書き方
-
異なるDB間でのJOINやVIEWについて
-
プロシージャで変数をテーブル...
-
SELECTでの指定行からの指定行...
-
ORDER BY 半角カナ
-
AccessVBAでリンクテーブルの参...
-
☆☆☆☆SQL Olacle 3つ以上の文字...
-
ACCESSとORACLEで抽出結果が異なる
-
PostgreSQLで小数点以下を処理...
-
オラクル オブジェクトのデー...
-
正規化?の戻しについて
-
取得するデータの件数指定、MyS...
-
SQLで抽出可能でしょうか?
-
GROUP BYを行った後に結合した...
-
Accessで別テーブルの値をフォ...
おすすめ情報