- PR -

SQLで追加・更新を行う条件文の書き方を教えてください

1
投稿者投稿内容
Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-19 09:25
お世話になります。

現在、データベースに日付・平均気温・天気のデータを格納しようとしていて、格納しようとしているデータと同じ日付のデータがあればUPDATE、なければINSERTをしようと考えています。そこで、下記のようなSQLコマンドを作ってみました。

----------------------------------------------------
sqlCommandDB.CommandText = "SELECT 日付 FROM 天気情報
CASE WHEN 日付=@WeatherDataDate
THEN UPDATE 天気情報
SET 日付=@WeatherDataDate,平均気温=@WeatherDataHeikin,天気=@WeatherDataTenki
WHERE 日付=@WeatherDataDate
ELSE INSERT INTO 天気情報 VALUES(@WeatherDataDate,@WeatherDataHeikin,@WeatherDataTenki) END";
----------------------------------------------------

便宜上改行してありますが、全て一行で書いています。
しかし、実行すると、

----------------------------------------------------
キーワード 'CASE' 付近に正しくない構文があります。
キーワード 'ELSE' 付近に正しくない構文があります。
キーワード 'END' 付近に正しくない構文があります。
----------------------------------------------------

と表示されて、UPDATEもINSERTもしません。おそらく条件分岐の構文が根本的に間違っているのだと思うのですが、どうしても原因がわかりませんので、ご助言いただければと思います。

なお、上記のUPDATEやINSERTをそのまま実行すれば、正常に更新・挿入ができていましたので、そのコマンドには間違いはないかと思います。

以上、お手数ですがご回答よろしくお願いいたします。

七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-09-19 09:39
とりあえず SELECT文 INSERT文 とUPDATE文を完成させてください


[ メッセージ編集済み 編集者: 七味唐辛子 編集日時 2006-09-19 09:51 ]
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2006-09-19 10:00
CASE文でこのような事はできないと思いました。

やるならばIF文ですが、そこは利用しているDBMSに依存しますね・・・。

めだか
大ベテラン
会議室デビュー日: 2004/11/11
投稿数: 109
投稿日時: 2006-09-19 10:19
SQL Serverだったらこんな感じ?

if ( SELECT count(*) FROM 天気情報 where 日付=@WeatherDataDate ) = 0
INSERT INTO 天気情報 VALUE (@WeatherDataDate,@WeatherDataHeikin,@WeatherDataTenki)
else
UPDATE 天気情報
SET 日付=@WeatherDataDate,平均気温=@WeatherDataHeikin,天気=@WeatherDataTenki
WHERE 日付=@WeatherDataDate

Wingard
大ベテラン
会議室デビュー日: 2004/10/04
投稿数: 168
お住まい・勤務地: 頭の中はファンタージェン
投稿日時: 2006-09-19 10:46
みなさん、ご回答ありがとうございます。

>めだかさん
その方法でバッチリできました!ありがとうございます!

>Ahfさん
if文が使えるSQLがあるというのを知りませんでした……。
SQLに依存しているんですね。大変参考になりました。

今後ともよろしくお願いいたします。

※記述を忘れていましたが、SQLはMSSQLです。

[ メッセージ編集済み 編集者: Wingard 編集日時 2006-09-19 10:49 ]
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-09-19 10:55
引用:

Wingardさんの書き込み (2006-09-19 10:46) より:
if文が使えるSQLがあるというのを知りませんでした……。
SQLに依存しているんですね。大変参考になりました。


SQLがSQLに依存するって日本語的に変だよね。
正しくはDBMSに依存する。ね。
1

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