
ひとつのテーブルの情報を、もうひとつのテーブルに反映させられなくて困っています。
おそらくupdateの副問合せの書き方が悪いと思うのですが、どこが悪いのか分かりません。
access2002 VBAで、同じフィールド構成を持つ2つのテーブルがあります。
TABLE_A
--------------------------
|P_Key | Field1 | Fieled2|
+------+--------+--------+
|111111|AAAA|BBBB|
|222222|CCCC|DDDD|
|333333|EEEE|FFFF|
|444444|GGGG|HHHH|
--------------------------
TABLE_B
--------------------------
|P_Key | Field1 | Fieled2|
+------+--------+--------+
|222222|ZZZZ|YYYY|
|333333|XXXX|WWWW|
--------------------------
このうち、ひとつのテーブル(TABLE_A)のField1 と Field2 の値を
もうひとつのテーブル(TABLE_B)のField1 と Field2 の値に変更したいのです。
条件は、P_Keyが同一のレコード同士です。
実行結果は以下のようにしたいのです。
TABLE_A (TABLE_Bは更新しないため変更無し)
--------------------------
|P_Key | Field1 | Fieled2|
+------+--------+--------+
|111111|AAAA|BBBB|
|222222|ZZZZ|YYYY|
|333333|XXXX|WWWW|
|444444|GGGG|HHHH|
--------------------------
VBAでupdateのSQLを書いているのですが、うまくいきません。
以下のSQLではDMLが正しくないのエラーになってしまいます。
(すみません。正式なエラーメッセージは失念しました)
update TABLE_A set( TABLE_A.Field1,TABLE_A.Field2 ) =
( select TABLE_B.Field1,TABLE_B.Field2 from TABLE_B
where TABLE_A.P_Key = TABLE_B.P_Key );
テーブル名に別名をつけたりしても同様にDMLが正しくないと怒られます。
質問は、以下の2つです。
1.上記更新は、ひとつのupdateのSQLで可能でしょうか?
それともTABLE_B を Selectでまわして、TABLE_Aのレコードを一行ずつ
更新していく必要があるのでしょうか?
2.1.が可能の場合、私の書いたSQLについてご助言をいただけませんでしょうか?
もしご存知の方おられましたら、ご教示をお願いできませんでしょうか?
以上です
No.1ベストアンサー
- 回答日時:
>1.上記更新は、ひとつのupdateのSQLで可能でしょうか?
可能です
>2.1.が可能の場合、私の書いたSQLについてご助言をいただけませんでしょうか?
この程度のものならクエリデザインビューで作成できますから
デザインビューで作成して,SQLビューで表示するのが簡単ですね
下はそのようにして作ったものです
UPDATE TABLE_A INNER JOIN TABLE_B ON TABLE_A.P_Key = TABLE_B.P_Key
SET TABLE_A.Field1 = [TABLE_B].[Field1], TABLE_A.Fieled2 = [TABLE_B].[Field2];
それにVBAを持ち出すまでもないような気もしますが・・・
ご回答ありがとうございます。
本日さっそく試させていただきます(access環境は自宅にはありませんので)。
ご指摘通りaccessなのでデザインビューを用いればいいのですが
すみません。まだ使い方をよく理解できていませんで。
自分の努力不足を棚に上げて質問しまして、失礼しました。
プログラムで組んでいるため今回はVBAで処理しています。
また回答させていただきます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL MYSQL エラー 2 2022/10/18 11:37
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- PHP php エラー 2 2022/10/23 16:43
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
このQ&Aを見た人はこんなQ&Aも見ています
-
Access サブフォームでの選択行の取得
その他(データベース)
-
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
クロス集計クエリの結果をテーブルにしたい
Access(アクセス)
-
-
4
falseとtrue 0,1,-1 の意味が知りたいです
PowerPoint(パワーポイント)
-
5
Access Update文の副問い合わせ
Access(アクセス)
-
6
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
7
Accessのクロス集計クエリから、追加クエリをvbaで記述したいが記述が分からない。
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DB2のSQLコマンドについて教え...
-
ACCESS2000で更新のあったテー...
-
ACCESSのWHERE文でのAND40個制限
-
インデックス監視
-
結合した場合の取得時間差について
-
ACCESSのリンクについて
-
Access コンボボックスを使った...
-
網点について
-
pgaの最大使用サイズについて
-
MicrosoftAccess 数十万件のデ...
-
VBAで データベースにデータを...
-
マンションのベランダでお酒の...
-
ORA-00959: 表領域'****'は...
-
Oracle 10g 複数のDELETE UPDAT...
-
表領域の違うEXPORT IMPORT
-
VB2005 CSVファイルをテーブル...
-
アクセスでフォームに追加項目...
-
Accessのテーブル内の文字の置...
-
mdb→csvへのエクスポートについて
-
JSPでデータベース作成
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量データの取得処理について
-
db2にて数値を3桁文字にて出力...
-
SQLite C/C++ でのテーブル数...
-
列の既定値を取得したい
-
SQLServerのテーブル定義書(?...
-
PL/SQLでテーブル名に変数を使...
-
ACCESS2002のupdateの副問合せ...
-
グループ化したいのですが
-
ACCESSのテーブルを毎日定刻に...
-
SQL文のテーブルについて
-
access2000のADO
-
ビューテーブル
-
登録する方法
-
ACCESSエラー「制限されたデー...
-
レコード集計のSQLについて
-
Sybaseにてupdate時に特定のInd...
-
テーブルランナー
-
データを削除しても表領域の使...
-
Viewにインデックスは張れ...
-
ORA-00959: 表領域'****'は...
おすすめ情報