DOBON.NET DOBON.NETプログラミング掲示板過去ログ

テーブル間のUPDATE

環境/言語:[Visual Studio .NET 2003/SQLServer]
分類:[ASP.NET]

こんにちわ。はじめまして。
現在、ストアドにてAテーブルの内容を利用してBテーブルを更新する
処理を作成しているのですが、以前ACCESSにて下記の様な記述を
していたのですがSQL Serverでは出来ないのでしょうか?

UPDATE AAA, BBB
SET AAA.CCC = bbb.ddd
■No17548に返信(こうたさんの記事)
> こんにちわ。はじめまして。
> 現在、ストアドにてAテーブルの内容を利用してBテーブルを更新する
> 処理を作成しているのですが、以前ACCESSにて下記の様な記述を
> していたのですがSQL Serverでは出来ないのでしょうか?
>
> UPDATE AAA, BBB
> SET AAA.CCC = bbb.ddd
>

AAAとBBBの両テーブルを更新したいのですか?
> AAAとBBBの両テーブルを更新したいのですか?

レスありがとうございます。
AAAのレコードの内容を使ってBBBを更新したいです。
update AAA set AAA.hoge = (select BBB.fuga from BBB where BBB.id = AAA.id) where AAA.hoge is null

のような感じかな。
こんにちは。

回答さんの投稿は「オマエそんなヘンテコな SQL でどういうことがしたいねん?」と
いう皮肉じゃないかと思いますが。

ヘンテコというか、たぶん Access 独自の SQL でしょうね。
基本的には UPDATE 句にはテーブル名は一つだけしか指定しません。
ちょうどいい機会ですので、正しい(というか標準的な) SQL について勉強してみる
のもいいかもしれないです。

このあたりが参考になるでしょうか。
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_k07.htm
>UPDATE 句にはテーブル名は一つだけしか指定しません
また、trapemiyaさんの書いてるような参照テーブルを指定する場合に関して言えば、
FROMやJOINが使用できます。
皆さん、ご回答ありがとう御座います。
trapemiyaさんとぽぴ王子さんの記述を真似して下記のようなロジックを書いてみたのですが
「ADOエラー:','付近に不適切な構文があります。」と言った
エラーメッセージが出て来てしまいました。

UPDATE AAA
SET (AAA.TEST1, AAA.TEST2, AAA.TEST3) =
  (SELECT TEST1, TEST2, TEST3 FROM BBB)

度々、申し訳御座いませんがご教授の程お願いいたします。
>Aテーブルの内容を利用してBテーブルを更新する
んですよね?
>UPDATE AAA
で良いのですか?

それとA、B両テーブル間の条件は?



テーブルA 項目ID,h,i
テーブルB 項目ID,j,k

UPDATE B SET j=A.h, k=A.i FROM A WHERE B.ID=A.ID
  • 題名: Re[7]: テーブル間のUPDATE
  • 著者: こうた
  • 日時: 2006/09/15 11:14:01
  • ID: 17576
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
■No17561に返信(回答さんの記事)
> >Aテーブルの内容を利用してBテーブルを更新する
> んですよね?
> >UPDATE AAA
> で良いのですか?
>
> それとA、B両テーブル間の条件は?
>
>
>
> テーブルA 項目ID,h,i
> テーブルB 項目ID,j,k
>
> UPDATE B SET j=A.h, k=A.i FROM A WHERE B.ID=A.ID

返信ありがとう御座います。
両テーブルとも1レコードしか無いのでそのまま条件を指定せず
上書きをするつもりです。

書いて頂いた例文を真似して実行した所うまく結果を得ることが出来ました。
色々と回答を頂き皆様本当にありがとう御座いました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板