- 締切済み
SQLの条件分の質問です
A1=0, A2=0, A3=0, A4=0 B1=0, B2=0, B3=125, B4=0 C1=77, C2=0, C3=457, C4=0 D1=0, D2=5, D3=0, D4=0 E1=2, E2=0, E3=0, E4=0 SQLの条件文で4番目が0であって1~3番目までは0以外だったらTrueとなる処理はどうしたらいいいでしょうか? いろいろ考えたのですがわかりません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- japan_3
- ベストアンサー率0% (0/2)
SQL内でtrue/falseを返すのではなくプログラム側で考えたらどうですか。 全件取ってきてループをまわし、そのなかで ・フィールド1~3 not= 0 ・フィールド4 = 0 の条件判断をし、true/falseを返してその後の処理をする・・・。 そうしないと条件に合わないレコードは取れませんから。。
- nitorin
- ベストアンサー率55% (11/20)
補足ですが No2さんの回答は、1番目から3番目までのフィールドが『全て』0でない場合の回答ですね。 1番目から3番目までのフィールドの『いずれか』が0でない場合の回答は Where句が次に変わります。 where ( fld1<>0 or fld2<>0 or fld3<>0 ) and fld4=0 No1さんもおっしゃっておられますが、やりたい事を明確に伝えないと なかなか回答が付きにくいとおもいます。
- dell_OK
- ベストアンサー率13% (770/5733)
4番目のフィールドが0で、1番目から3番目までのフィールドが0でないと言うのでしたら、以下のようになると思います。 select * from table4 where fld1<>0 and fld2<>0 and fld3<>0 and fld4=0 テーブル:table4 フィールド:fld1,fld2,fld3,fld4 1レコード目の内容:0,0,0,0 2レコード目の内容:0,0,125,0 3レコード目の内容:77,0,457,0 4レコード目の内容:0,5,0,0 5レコード目の内容:2,0,0,0 示された「A1=0」などがAがレコード、1がフィールドの1番目と解釈して、上記のように展開しましたが、このデータですとどのレコードも参照されません。 「Trueとなる処理」を参照するための条件としてSELECT文を書きましたが、見当違いの回答でしたらお許しください。
- masa6272
- ベストアンサー率66% (93/140)
どういった、テーブルにどういうカラムがあるんでしょうか? 1番目とか、4番目の意味が分かりません。 もう少し、具体的に質問しないと・・・