
普通のUPDATE文はUPDATEするテーブル名を一つ記入して
UPDATE テーブルA SET フィールドA = 値A WHERE テーブルA.フィールドB = 値B
みたいな感じですが、私のしたい事はと言うと
UPDATE テーブルA,テーブルB,テーブルC
SET A.フィールドA = 値A
WHERE テーブルA.フィールドA = テーブルB.フィールドB
AND テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E
という具合に複数のテーブルがUPDATEするテーブルA以外のところで、互いに条件で結ばれており、FROM句でUPDATEしないテーブル名まで宣言しないといけなくなっています。そもそもこういうFROM句を使うUPDATE文は実行可能かも不明です。どなたか解決策お願いいたします。ちなみに開発ソフトはVBAを使っています。
No.3ベストアンサー
- 回答日時:
SET句にもサブクエリを使えますよ。
UPDATE テーブルA
SET フィールドA = ( SELECT テーブルB.フィールドF
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )
WHERE フィールドA = ( SELECT テーブルB.フィールドB
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )
> VBAと言うと普通ACCESSですよね?
VBAからODBC経由でOracleやSQL Serverという例もあるので
一概にはAccessのみとはいえません。
SET句とWHERE句とサブクエリを別々に作るのはいいのですが、レコードが複数存在した時につじつま合うんでしょうか?
2つ目のレコードに3つ目の値を放り込んじゃったりとか?
No.2
- 回答日時:
データベースは何を使っているんでしょうか?
ACCESS、ORACLE、SQLサーバーなどありますが…。
No.1
- 回答日時:
UPDATE テーブルA
SET フィールドA = 値A
WHERE フィールドA = ( SELECT テーブルB.フィールドB
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )
これでできます。
この回答への補足
ありがとうございます。
私もサブクエリを考えていたんですが、結合の入ったUPDATE文と全く同じ機能を果たすことができるんですか?
それとすいません。2行目の式を少し間違えていました。
SET テーブルA.フィールドA=テーブルB.フィールドF
でした。これならサブクエリを使うことはできないと思うのですが・・・どうでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Oracle SQL update方法 2 2022/06/22 14:07
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで複数のテーブルと結合した...
-
accessでフィールド追加のあと...
-
マイクロソフト系簡易データベ...
-
INT64対応のprintf系関数はあり...
-
FTPサーバーから受信したファイ...
-
ACCESSデータベースにV...
-
ADOX フィールドのRequiredプ...
-
Access VBA 添付型フィールド
-
2つ目のレコードの値を取得す...
-
[Access VBA] DoCmd.OpenForm ....
-
NULLを含む文字列の結合で...
-
Access 2010で実行時エラー3061
-
DataTableに特定のフィールドが...
-
ACCESSで視覚的タイムテーブル...
-
Access レポートのフィルターの...
-
Accessの画像挿入のVBAコード
-
クリスタルレポート(8.5)の書式...
-
日付と文字列を条件としてDLook...
-
テーブルのデータ型の変更がで...
-
SQLの構文エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INT64対応のprintf系関数はあり...
-
accessでフィールド追加のあと...
-
2つ目のレコードの値を取得す...
-
Accessのフィールド名に半角括...
-
DataTableに特定のフィールドが...
-
テーブルのデータ型の変更がで...
-
ACCESSデータベースにV...
-
クリスタルレポート(8.5)の書式...
-
クリスタルレポートで文字列の...
-
日付と文字列を条件としてDLook...
-
Access 2010で実行時エラー3061
-
ADOでNullフィールドの抽出
-
Access クエリで変数を参照する...
-
NULLを含む文字列の結合で...
-
AccessのDAOでフィールド名を配...
-
アクセス ADO Null以外のレコ...
-
クリスタルレポートで0件時の表示
-
FTPサーバーから受信したファイ...
-
C#で変数名の取得
-
c言語で自分のホームディレク...
おすすめ情報