- PR -

SELECT文の条件検索の条件を複数をひとつに指定

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/06/08
投稿数: 4
投稿日時: 2005-07-22 15:19
こんにちわ よろしくお願いします。
使っているDBがoracleDBです。


SELECT
記号
番号
区分


氏名
レセプトコード
FROM
台帳
keyはレセプトコード、記号、番号、年、月にしています。

上記のテーブルを前件表示の一覧表を作りたいのですが、
今まではkeyはレセプトコードのみにして登録する時に+1していただけなので
レセプトコードの小さい順で前件表示できていたのですが、変更があり上記の5項目がkeyに変更になりました。
そこで質問があるのですが、WHERE文で条件検索をする時に、keyの5項目を一つに結合して
検索をすることって可能なのでしょうか?

今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-07-22 16:04
引用:

未記入さんの書き込み (2005-07-22 15:19) より:
こんにちわ よろしくお願いします。
使っているDBがoracleDBです。


SELECT
記号
番号
区分


氏名
レセプトコード
FROM
台帳
keyはレセプトコード、記号、番号、年、月にしています。

上記のテーブルを前件表示の一覧表を作りたいのですが、
今まではkeyはレセプトコードのみにして登録する時に+1していただけなので
レセプトコードの小さい順で前件表示できていたのですが、変更があり上記の5項目がkeyに変更になりました。



「前件表示の一覧表」ってどんなものなのか分かりませんが、
「レセプトコードの小さい順で前件表示」って部分から

キー値がある値よりも大きい値を持つレコードを取得して、
キー値でソートした結果を取得したい。

ってことでしょうか?
かつ今回はキーが1列⇒5列に変更になったという感じ?

引用:

WHERE文で条件検索をする時に、keyの5項目を一つに結合して
検索をすることって可能なのでしょうか?



一番単純なのは 5列を文字列連結した値がどうなのか?
って言うWhere句を作成することですかね・・・。
これで出来るんですが、処理性能が気になるところです。

(手元の環境(Oracle9i)では、
インデクス構成列を文字列連結してWhereに指定したSQLをSQL*Plus上から実行したところ、
インデクス利用がされているのを確認できましたが・・・)
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-07-22 16:40
「keyの5項目を一つに結合して」という意味がわからないのですが、単純に
コード:
SELECT 記号〜レセプトコード FROM 台帳 WHERE レセプトコード > 何とか AND 記号 = 何とか AND ... AND 月 = 何とか ORDER BY レセプトコード


てな感じではダメでしょうか。

どういう処理をお望みかわからないので、入力データ例と出力イメージ、それと出来ればどういう SQL 文を試してダメだったか書き込んでいただけますか。
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-07-22 16:58
引用:

コード:

SELECT 記号〜レセプトコード FROM 台帳 WHERE レセプトコード > 何とか AND 記号 = 何とか AND ... AND 月 = 何とか ORDER BY レセプトコード


てな感じではダメでしょうか。



レセプトコード:記号が以下のようなデータとなっていて
100:A
100:B
100:C
200:A
200:B
200:C
300:A
300:B
300:C

レセプトコートが200以上かつ記号がB以降のデータが欲しい場合に
レセプトコード >= 200 AND 記号 >= B
って記述してしまうと
300:Aが対象外になってしまうじゃないですか。

で仕方なく、レセプトコード||記号 >= 200B
ってしたりすることがあるので、そのパターンかなぁって思ったんですが。

いかがですか? > 未記入さん

#以前、請け負っていた仕事でこういう処理が多々あったので、
#意識がそちらにはまっただけかも知れない・・・(^^;

#下の発言に伴い言葉の修正 以上⇒以降

[ メッセージ編集済み 編集者: 夏椰(かや) 編集日時 2005-07-22 17:37 ]
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-07-22 17:14
こんばんわ。

直感的に「あれ?」と思ったのですが

・レセプトコートが200以上かつ記号がB以上のデータが欲しい
・300:Aが対象外になってしまう
これでいいんじゃないんですか?

だって、「300:A」は記号が「B 以上」じゃないから、
取得対象外になるんですよね?
( 以上、って C とか D とかですよね??? )

何か勘違いしています、私?

今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-07-22 17:36
引用:

小僧さんの書き込み (2005-07-22 17:14) より:
こんばんわ。

直感的に「あれ?」と思ったのですが

・レセプトコートが200以上かつ記号がB以上のデータが欲しい
・300:Aが対象外になってしまう
これでいいんじゃないんですか?

だって、「300:A」は記号が「B 以上」じゃないから、
取得対象外になるんですよね?
( 以上、って C とか D とかですよね??? )

何か勘違いしています、私?




未記入さんの求めている結果が明示的でないので、いいか悪いかは
私にはいえません。
#なんで いかがですか? って振ってみているんですけどね(^^;

単純に
「レセプトコードが200以上かつ記号がB以上のデータ」
っていいかたよくなかったですね。(^^;
「レセプトコードが200以上かつ記号がB以降のデータ」
が欲しいのかしら?って思っただけです。
失礼いたしました。
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-07-22 17:46
こんばんは。

私こそ、勘違いしていました。
質問者は「未記入」さんで、
夏椰(かや)さんは回答 ( 及び最初の質問に対する質問 ) をしていたのですね(--;;;

と、いう事で「未記入」さんの求めている結果がどういうものかが
キーになってくるのですね。

※ やっぱり脊髄反射で書き込むとロクな事がないですな。はっはっは。。。
1

スキルアップ/キャリアアップ(JOB@IT)