C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: SQL文のWHEREの中でIF文を使いたい


(過去ログ 29 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■14014 / inTopicNo.1)  SQL文のWHEREの中でIF文を使いたい
  
□投稿者/ ベリー (1回)-(2008/02/07(Thu) 19:11:54)

分類:[データベース全般] 

SQL文で、WHEREの条件文内でIF文を使って分岐したいのですがどうすればいいのでしょうか?
恥しのんでよろしくお願いします。
引用返信 編集キー/
■14015 / inTopicNo.2)  Re[1]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ いしだ (86回)-(2008/02/07(Thu) 19:33:08)
2008/02/08(Fri) 14:06:00 編集(投稿者)

IF文の条件が、条件1,2,3だとして、
select * from aaa
where ([条件1] and [条件1の時のwhere句]) or ([条件2] and [条件2の時のwhere句]) or ([条件3] and [条件3の時のwhere句])
って感じで良いんじゃないでしょうか。

編集:条件3の部分が2になっていたのを修正
引用返信 編集キー/
■14016 / inTopicNo.3)  Re[1]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ はつね (444回)-(2008/02/07(Thu) 19:35:51)
はつね さんの Web サイト
No14014 (ベリー さん) に返信
> SQL文で、WHEREの条件文内でIF文を使って分岐したいのですがどうすればいいのでしょうか?

どのようなイメージかは分かりませんがIF文そのままのイメージではWHERE句にはかけません。
ただし、SQL文の発行先にIF文と同じような組み込み関数などがあったり独自関数を定義したりすればそれっぽくはなるかも知れませんがThen節やElse節なんかは無理ですね。

引用返信 編集キー/
■14017 / inTopicNo.4)  Re[2]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ nori (6回)-(2008/02/07(Thu) 19:37:21)
CASE式で如何でしょうか?
引用返信 編集キー/
■14018 / inTopicNo.5)  Re[3]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ いしだ (87回)-(2008/02/07(Thu) 19:48:27)
> CASE式で如何でしょうか?
単純には書けませんね。
select * from aaa
where case when a=1 then b>100
when a is null then c=500
end
のようには書けません。
case式を使うなら一工夫必要になりますね。
引用返信 編集キー/
■14029 / inTopicNo.6)  Re[4]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ 片桐 (69回)-(2008/02/08(Fri) 01:00:18)
片桐 さんの Web サイト

Where句の中にIF文を使うことはできるか→それはできません

実際にはどういうレコードをどのように取りたいのでしょうか?
使用するデータベースとSQL要件が判らないのでそれ以上の回答というかヒントが出せません。

案外、複雑なことをしなくても別の方法でできるかもしれませんよ?


引用返信 編集キー/
■14047 / inTopicNo.7)  Re[5]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ ベリー (2回)-(2008/02/08(Fri) 13:47:50)
説明不足でどうも済みません

> 実際にはどういうレコードをどのように取りたいのでしょうか?

select * from テーブル名 where
[テーブル].[フラグ] = '1' の場合、[テーブル].[データ] = '0' のレコード全て取得
[テーブル].[フラグ] = '2' の場合、[テーブル].[データ] = '1' のレコード全て取得

と言った毛コードを取得したいのですが・・・・・
引用返信 編集キー/
■14048 / inTopicNo.8)  Re[6]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ 魔界の仮面弁士 (604回)-(2008/02/08(Fri) 13:58:46)
No14047 (ベリー さん) に返信
> select * from テーブル名 where 
> [テーブル].[フラグ] = '1' の場合、[テーブル].[データ] = '0' のレコード全て取得
> [テーブル].[フラグ] = '2' の場合、[テーブル].[データ] = '1' のレコード全て取得
> と言った毛コードを取得したいのですが・・・・・

毛コードの構造がいま一つ分かりません…。そのテーブルというのが

フラグ  データ  他の列
―――  ―――  ―――
  1    0  はげ
  1    1  ひげ
  2    0  ふげ
  2    1  へげ
  2    1  ほげ

だと仮定した場合において、

フラグ  データ  他の列
―――  ―――  ―――
  1    0  はげ
  2    1  へげ
  2    1  ほげ

を取りたいという意味であれば、こうでしょうけれども。

 WHERE ([テーブル].[フラグ] = '1' AND [テーブル].[データ] = '0')
   OR  ([テーブル].[フラグ] = '2' AND [テーブル].[データ] = '1')

引用返信 編集キー/
■14049 / inTopicNo.9)  Re[6]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ よよよ。 (1回)-(2008/02/08(Fri) 14:01:56)
No14047 (ベリー さん) に返信
> 説明不足でどうも済みません
>
>>実際にはどういうレコードをどのように取りたいのでしょうか?
>
> select * from テーブル名 where
> [テーブル].[フラグ] = '1' の場合、[テーブル].[データ] = '0' のレコード全て取得
> [テーブル].[フラグ] = '2' の場合、[テーブル].[データ] = '1' のレコード全て取得
>
> と言った毛コードを取得したいのですが・・・・・

たぶん、まだ説明不足なんだろうね。
[テーブル].[フラグ]と[テーブル].[データ]は同一テーブルなの?
本当は、もうちょっと条件あるんじゃない?
実際の条件はフラグ='1'かつデータ='0'もしくはフラグ='2'かつデータ='1'って落ちじゃないよね。
引用返信 編集キー/
■14050 / inTopicNo.10)  Re[7]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ ベリー (3回)-(2008/02/08(Fri) 14:37:26)
いしださん、はつねさん、noriさん、片桐さん、魔界の仮面弁士さん、よよよ。さん 

どうも有難うございました。
皆様のご協力で無事解決できました。
今後とも、ご迷惑をおかけするかもしれませんがよろしくお願いします。
解決済み
引用返信 編集キー/
■14056 / inTopicNo.11)  Re[8]: SQL文のWHEREの中でIF文を使いたい
□投稿者/ はつね (448回)-(2008/02/08(Fri) 15:46:16)
はつね さんの Web サイト
No14050 (ベリー さん) に返信
> 皆様のご協力で無事解決できました。
> 今後とも、ご迷惑をおかけするかもしれませんがよろしくお願いします。

今回の件は、どのようにしたら解決できたのか投稿して頂けると助かります。
結局のところやりたかった事がなんなのかも分からない状態ですので解決した方法を投稿してもらう事により、ベリーさんの質問がどのような事だったか他の閲覧者の理解の手助けになるかも知れません。
そうする事で、質問するスキルもあがるでしょうし、少しくらい質問の言葉が足りなくてもこの投稿から状況を推測しやすくなるかも知れません。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -