■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#4082-0RE#4079:テーブル単位での更新匿名40821999-11-15(月) 13:38
     #4100-0RE#4082:テーブル単位での更新匿名41001999-11-15(月) 15:31
     #4103-0RE#4100:テーブル単位での更新匿名41031999-11-15(月) 16:46
     #4105-0RE#4103:テーブル単位での更新いなちゃん1999-11-15(月) 17:08
     #4112-0RE#4105:テーブル単位での更新匿名41121999-11-15(月) 18:08
     #4117-0RE#4112:テーブル単位での更新いなちゃん1999-11-15(月) 18:30
     #4118-0RE#4117:テーブル単位での更新匿名41181999-11-15(月) 18:38
#4082-0
RE#4079:テーブル単位での更新
> > フィールド単位でなくて、テーブル単位での更新って出来ないでしょうか?
>   テーブルの何を更新したいのでしょう?
説明がヘタで、すみません。

普通、TABLE2のデータでTABLE1を更新する場合、次のようにすると思うんですよ。
UPDATE TABLE1 SET TABLE1.CODE = TABLE2.CODE, TABLE1.NAME = TABLE2.NAME WHERE TABLE1.CODE = TABLE2.CODE;

これを、
UPDATE TABLE1 SET TABLE1.* = TABLE2.* WHERE TABLE1.CODE = TABLE2.CODE;
っていう具合には、出来ないですよね。
別の方法で出来ないでしょうか?

これをやりたい理由は、
 1.SQLを短くしたい
 2.フィールドを追加したとき、SQLは修正したくない
です。

お願いします。
#4100-0
RE#4082:テーブル単位での更新
該当データをDELETEしてINSERTするのはだめですか?
テーブルのフィールドがそっくり同じなら、INSERT 〜 SELECT * 〜 で
できると思うのですが・・・
あ、こちらはORACLE7.3なので、他のではどう書くのかわかりません。(^^;
#4103-0
RE#4100:テーブル単位での更新
> 該当データをDELETEしてINSERTするのはだめですか?
> テーブルのフィールドがそっくり同じなら、INSERT 〜 SELECT * 〜 で
> できると思うのですが・・・
> あ、こちらはORACLE7.3なので、他のではどう書くのかわかりません。(^^;

回答ありがとうございます。

上書きする際に使用するキー(UPDATE 〜 WHERE xxxx)と
テーブルで指定している重複してはいけないキー(Accessでいうと鍵マークの項目)が
同じフィールドでないので、その方法は使えません。

何か良い方法があれば、いいのですが...。
ないなら、あきらめます。
#4105-0
RE#4103:テーブル単位での更新
> 上書きする際に使用するキー(UPDATE 〜 WHERE xxxx)と
> テーブルで指定している重複してはいけないキー(Accessでいうと鍵マークの項目)が
> 同じフィールドでないので、その方法は使えません。
勘違いしていませんか?
WHERE句に記述する条件はテーブルのキーと同じじゃなくてもいいんですよ。

>UPDATE TABLE1 SET TABLE1.* = TABLE2.* WHERE TABLE1.CODE = TABLE2.CODE;
匿名4100が言っているのは、まず
TABLE2.CODEと同じTABLE1.CODEのデータを削除してその後にTABLE2をTABLE1にINSERTするってことです。

それとも、この方法だとキーが重複するんでしょうか?
#4112-0
RE#4105:テーブル単位での更新
> >UPDATE TABLE1 SET TABLE1.* = TABLE2.* WHERE TABLE1.CODE = TABLE2.CODE;
> 匿名4100が言っているのは、まず
> TABLE2.CODEと同じTABLE1.CODEのデータを削除してその後にTABLE2をTABLE1にINSERTするってことです。
> 
> それとも、この方法だとキーが重複するんでしょうか?

回答ありがとうございます。

説明が不足していました。
匿名4100さんが言っている内容については、理解しています。

>UPDATE TABLE1 SET TABLE1.* = TABLE2.* WHERE TABLE1.CODE = TABLE2.CODE;
TABLE1.CODEやTABLE2.CODEは、重複してはいけないキーではないです。
あくまでも削除するためのキーです。

重複してはいけないキーをJUFUKUという名前だとします。
以下の場合では、INSERTするときにAccessに起こられます。

TABLE1                TABLE2
---------------------------------------------------------------------
JUFUKU  CODE          JUFUKU  CODE
10000   B             10000   A
20000   C             20000   B

匿名4100さんのやり方だと
1.TABLE1のJUFUKU=10000、CODE=Bを削除します
2.TABLE1にJUFUKU=20000、CODE=Bを追加します
  このとき、TABLE1には既にJUFUKU=20000、CODE=Cが存在するので、Accessに怒られてしまいます
#4117-0
RE#4112:テーブル単位での更新
>重複してはいけないキーをJUFUKUという名前だとします。
>以下の場合では、INSERTするときにAccessに起こられます。
>
>TABLE1                TABLE2
>---------------------------------------------------------------------
>JUFUKU  CODE          JUFUKU  CODE
>10000   B             10000   A
>20000   C             20000   B
>
>匿名4100さんのやり方だと
>1.TABLE1のJUFUKU=10000、CODE=Bを削除します
>2.TABLE1にJUFUKU=20000、CODE=Bを追加します
>  このとき、TABLE1には既にJUFUKU=20000、CODE=Cが存在するので、Accessに怒られてしまいます
ん〜。少なくともあなたが最初に提示した
>UPDATE TABLE1 SET TABLE1.* = TABLE2.* WHERE TABLE1.CODE = TABLE2.CODE;
が可能だとしてもこの場合同じエラーになりますよ。(JUFUKUが10000のレコードを20000に書き換えるのですから)

同じテーブルを用意して、具体的に何が行いたいのかがわかりません。
具体的なものを示せば何かいい方法が聞けるかも...
ちなみに私は明日まで書き込みはできません。
#4118-0
RE#4117:テーブル単位での更新
> 同じテーブルを用意して、具体的に何が行いたいのかがわかりません。
> 具体的なものを示せば何かいい方法が聞けるかも...
> ちなみに私は明日まで書き込みはできません。

回答ありがとうございます。

TABLE1とTABLE2は違うファイル(MDB)なんです。
具体的な内容を書くと、とても長い文章になってしまうので書けません。
自力で頑張ってみます。

色々とありがとうございました。
このページと関連する記事:
#2373-0CREATE TRIGGERで教えてください2002-06-04(火) 12:02
#20172-0mdbのテーブルのソートの仕方について2001-04-10(火) 17:45
#1992-0ALTER TABLEの使用方法2002-04-17(水) 14:50
#765-0MDBファイルの更新情報取得 2001-10-10(水) 13:05
#1800-0Update文でサブクエリをしたい(?)2002-03-15(金) 23:43
#1257-0UPDATE文の値を別テーブルから取得したい2001-12-14(金) 10:19
#29125-0一時テーブルに既存のテーブルとフィールドの追加をする方法2002-06-01(土) 00:05
#715-0フィールドの追加について2001-09-27(木) 16:55
#4076-0テーブル単位での更新1999-11-15(月) 11:52
#910-0フィールドの削除方法(ACCESS)2001-10-25(木) 09:54
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)