@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

[SQL] 複数条件分岐について

投稿者投稿内容
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-13 22:03
こんばんわ。
VB.NET2003を使ってASP.NETのWEBサービス開発をしています。
サーバーはWin2003Serverで、データベースはSQLServer2000です。

現在、SQL文で条件分岐の処理を行っているのですが、思うような処理がされません。
どなたかご教授いただけると幸いです。

やりたいことは・・・

If 条件A
 処理1
Else
  If 条件B
   処理2
  ElseIf 条件C
   処理3
  Else

というようなことなのですが、このままだと最初のElse以下で1つめの条件と処理は実行されるのですが、その次の条件と処理は実行されません。
そこで、最初のElse以降をBignとEndで囲み、ひとつのトランザクションとして処理をしてみましたが、それでも結果は変わりませんでした。

どういった処理の書き方をすれば思い通りになるのでしょうか?
宜しくお願いいます。
Mr.タナカ
ベテラン
会議室デビュー日: 2003/03/15
投稿数: 64
投稿日時: 2003-10-13 23:10
こんにちは。
スレッド見ました。

「Begin〜End」で記述するのはプロシージャですよね?
「If〜」以外にもCase文があると思いますが...
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2003-10-14 00:35
「思うような処理」というのは察しかねますが、
条件Cが成立すれば処理3は実行されるのでは
ないでしょうか?

微妙なインデントがとても気になりますが。
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2003-10-14 08:54
1つ確認したいのですが、上の処理だと、
@処理1
A処理2
B処理3
Cそれ以外の処理
のいずれか1つ実行されますが、「思っている処理」と相違はないでしょうか?

[ メッセージ編集済み 編集者: アティ 編集日時 2003-10-14 09:09 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-14 09:01
引用:

KIMERAさんの書き込み (2003-10-13 22:03) より:

やりたいことは・・・

If 条件A
 処理1
Else
  If 条件B
   処理2
  ElseIf 条件C
   処理3
  Else

というようなことなのですが、このままだと最初のElse以下で1つめの条件と処理は実行されるのですが、その次の条件と処理は実行されません。


 {最初のElse以下}とは、「条件AのElse」のことでしょうか?
 {その次の条件と処理}とは、「条件Cと処理3」のことでしょうか?
 やりたいことは、「条件A」が偽の時、「条件B」と「条件C」の両方を検査する、ということですか?Elseは「そうでなければ」なので、「処理2」が行われた、つまり「条件B」が真の時には評価されません。End Ifで条件Bを閉じた後、新たに「If 条件C」とします。 
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-14 11:43
おはようございます。
みなさんありがとうございます。
あせっていたせいか、間違ったことを投稿していました;;
補足&修正させてください。

えと、思うようにいかないというのは
あらかじめ条件に当てはめてデバッグしてみたのですが

条件A>偽>条件B>偽>条件C>真>処理3>その後に続く処理 というのと

条件A>偽>条件B>偽>条件C>偽>その後に続く処理 とうことを

やってみたのですが

条件Bが偽であれば条件Cを飛ばしてその後に続く処理へといってしまいます。

そこで条件Bと条件CをBigin〜Endで囲めばいいと聞いてやってみたのですが
それでも結果は変わりませんでした。
内心、気がめいっているところなので単なるコーディングミスも考えられますが
とりあえず何かあればと思い、投稿させていただきました。

以下のページを参考にやってみましたが
もっと詳しく書いてあるページなど知っていれば教えてもほしいです。
http://www.atmarkit.co.jp/fnetwork/rensai/sql21/sql1.html
KIMERA
大ベテラン
会議室デビュー日: 2003/02/28
投稿数: 112
お住まい・勤務地: 兵庫県・大阪府
投稿日時: 2003-10-14 13:21
非常に申し訳ありません。
自己解決を致しました。

原因は条件分岐の構文にまったく関係のない部分での処理ミスでした。
ありがとうございました。

またJittaさんの返信の質問なのですが、SQL文でEndIfというのは使用可能なのでしょうか?
基本的にSQL文だとEndは使わないように教えられたのですが・・・。
もしも使えるというならどういった場合に使って、またどういった違いになるのかを教えていただければうれしいです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-10-14 14:50
引用:

KIMERAさんの書き込み (2003-10-14 13:21) より:

またJittaさんの返信の質問なのですが、SQL文でEndIfというのは使用可能なのでしょうか?
基本的にSQL文だとEndは使わないように教えられたのですが・・・。
もしも使えるというならどういった場合に使って、またどういった違いになるのかを教えていただければうれしいです。


 OracleではEND IFですが、SQL ServerではBEGIN〜ENDによるブロック化ですか。なので、このようになるかと思います。

IF 条件
 BEGIN
  式
 END
ELSE IF 条件
 BEGIN
  式
 END

あくまで{条件Bを閉じた後}の意味です。よく調べず、Oracleのまま書いてしまいました。失礼しました。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-10-14 14:53 ]

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