![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
参照TBのF1、F6、F8と修正TBのF1、F6、F8が同じだったら、修正TBのF2、F7を参照TBのF2、F7に置き換えたい。
SQLの書き方がわかりません。
UPDATE 修正TB
INNER JOIN 参照TB
ON (修正TB.F1 = 参照TB.F1 And 修正TB.F6 = 参照TB.F6 And 修正TB.F8 = 参照TB.F8)
SET 修正TB.F2 = 参照TB.F2 , 修正TB. F7 = 参照TB.F7
又は、
UPDATE 修正TB
SET 修正TB.F2=参照TB.F2 , 修正TB.F7=参照TB.F7
WHERE EXISTS
( SELECT 1 FROM 参照TB
WHERE 修正TB.F1=参照TB.F1 And 修正TB.F6=参照TB.F6 And 修正TB.F8=参照TB.F8 )"
どこがいけないでしょうか?
No.1ベストアンサー
- 回答日時:
以下でどうですか。
UPDATE 修正TB INNER JOIN 参照TB ON (修正TB.F8 = 参照TB.F8) AND (修正TB.F6 = 参照TB.F6) AND (修正TB.F1 = 参照TB.F1) SET 修正TB.F2 = [参照TB].[F2], 修正TB.F7 = [参照TB].[F7]
WHERE (((修正TB.F1)=[参照TB].[F1]) AND ((修正TB.F6)=[参照TB].[F6]) AND ((修正TB.F8)=[参照TB].[F8]));
この回答への補足
ご回答、ありがとうございます。
でも、
「実行時エラー3135 JOIN操作の構文エラーです。」
となってしまいます。
再度のご指導をお願い致します。
私の間違いでした。
参照TBに間違ったテーブル名を記述して実験してました。
おかげ様で、うまく動いています。
ありがとうございました。
No.3
- 回答日時:
No1です。
参照TB
F1 F2 F6 F7 F8
A1 あああ B1 いいい C1
A2 えええ B21 えええ C21
A3 かきく B3 たちつ C3
修正TB
F1 F2 F6 F7 F8
A1 959 B1 363 C1
A2 965 B23 111 C23
A3 115 B3 499 C3
A1 236 B1 546 C1
のようなサンプルテーブルで確認していますが。
利便上、F3とかF4などのフィールドは省いています。
このようなテーブルでクエリを実行すると、
F1 F2 F6 F7 F8
A1 あああ B1 いいい C1
A2 965 B23 111 C23
A3 かきく B3 たちつ C3
A1 あああ B1 いいい C1
のように修正TBは更新されます。補足のような
エラーはでませんが、提示したSQL文を正しく
クエリのSQLビューに貼り付けたのでしょうか。
あるいは、実際のテーブルに合わせてSQL文を
書き換えてエラーが出たのでしょうか。
あるいは、質問通りにテーブルは参照TB、修正TB、
フィールドはF1、F2、F6、F7、F8とした上で
エラーが出たのでしょうか。
No.2
- 回答日時:
【要旨】
空白(Null)のフィールドも値が一致したものとみなして結合する場合、
Null以外の値に変換してやる必要があります。
(例えばNz関数で空文字や0に変換したり、「&」を使用したテキスト
連結で文字列化する、など)
UPDATE 修正TB
INNER JOIN 参照TB
ON (修正TB.F1 & "◆" & 修正TB.F6 & "◆" & 修正TB.F8=参照TB.F1 & "◆" & 参照TB.F6 & "◆" & 参照TB.F8)
SET 修正TB.F2 = 参照TB.F2, 修正TB.F7 = 参照TB.F7;
【詳細】
ご提示のSQL文を使用して、こちらのサンプルデータを処理したところ、
問題なく更新されました。
(サンプルには主キーなどの設定なし)
★但し、「修正TB. F7」に余計な半角Spaceがあったのでそこは修正★
> 参照TBのF1、F6、F8と修正TBのF1、F6、F8が同じだったら、
> 修正TBのF2、F7を参照TBのF2、F7に置き換えたい。
とのことですが、ひょっとして、F1・F6・F8のどれかが空白(Null)の場合も、
更新対象としたい、ということでしょうか。
上記の理解で正しければ、以下の方法で対応できます:
<修正案・1>
データ型が「文字列型」のフィールドについてはNullと空文字を同一と
みなしてよく、「数値型」についてはNullと0を同一とみなしてよい場合:
(文字列型のフィールドで、空文字を許可していない場合も含む)
UPDATE 修正TB
INNER JOIN 参照TB
ON (Nz(修正TB.F1) = Nz(参照TB.F1) And Nz(修正TB.F6) = Nz(参照TB.F6) And Nz(修正TB.F8) = Nz(参照TB.F8))
SET 修正TB.F2 = 参照TB.F2 , 修正TB.F7 = 参照TB.F7
<修正案・2>
「文字列型」のフィールドでのNullと空文字の同一視はよいが、
「数値型」でのNullと0は区別を必須とする場合:
(「◆」は各フィールドの値の区切りとするために使用。実際のデータ中に
この文字が含まれる場合は、データに含まれることのない文字・記号を
代わりに使用して下さい)
UPDATE 修正TB
INNER JOIN 参照TB
ON (修正TB.F1 & "◆" & 修正TB.F6 & "◆" & 修正TB.F8=参照TB.F1 & "◆" & 参照TB.F6 & "◆" & 参照TB.F8)
SET 修正TB.F2 = 参照TB.F2, 修正TB.F7 = 参照TB.F7;
・・・以上です。
>問題なく更新されました。
再度、点検しました。
>余計な半角Space
それと、
INNER JOIN の参照TBに間違ったテーブル名を記述して実験してました。
おかげで、こちらも問題なく更新されました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドライブ・ストレージ NASの容量と ホルダーの プロパティの サイズと ディスク上のサイズの違い 1 2022/10/03 13:41
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- クラシック 楽器の省略記号について、 2 2023/03/30 18:29
- 楽器・演奏 吹奏楽部の方、吹奏楽経験者の方に質問!というかアンケート?です! アンコンがこれから始まるのですが、 7 2023/08/25 22:43
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Y!mobile(ワイモバイル) ワイモバイルデータのバックアップは2 TB ですが パソコンでもデータが見れたり便利ですか? 2 2023/01/25 00:57
- ドライブ・ストレージ バッファロー製の古いNASの最大容量を知りたいです 2 2022/03/28 14:31
- BTOパソコン ドスパラでデスクトップパソコンを注文 壊れた場合に部品を交換するやりかた 5 2022/05/22 00:27
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
Access にて "mm:ss.0" 形式の ...
-
Excelの外部参照と書式設定につ...
-
SELECT INTOで一度に複数の変数...
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
joinの場合のテーブル名の別名...
-
sqlに記述できない文字
-
SELECTした結果に行番号を求めたい
-
集計でテストの各教科の最高得...
-
既存データをINSERT文にして出...
-
オラクルのUPDATEで複数テーブル
-
SQLで、Join句で結合したテ...
-
truncate tableを使って複数の...
-
IDとパスワードについて。
-
Accessで今日から5日後
-
パススルークエリ&ACCESSテーブ...
-
既にテーブルが存在する場合の...
-
データ削除とSQL*Loaderでのイ...
-
2つのテーブルをLIKE演算子のよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgreSQLのtimestamp型で時間...
-
絶対参照と相対参照の違いを教...
-
Access にて "mm:ss.0" 形式の ...
-
予約システムでの時間の設計に...
-
SELECT の仕方 (今月のデー...
-
該当レコードなしでエラーを発...
-
ご覧ください、ご参照ください...
-
開始日と終了日が設定されてい...
-
MySQLで期間のUNIQUEってできま...
-
SQL 文 日付範囲を指定したレコ...
-
MS_ACCESSでINSTR関数を使いたい。
-
参照数とはなんですか?
-
アクセス2010他テーブルを参照...
-
重複データより一番古いデータ...
-
グループ単位での表示?
-
Excelの外部参照と書式設定につ...
-
SQL文の書き方
-
月報からいろいろ集計したい
-
【SQL】他テーブルに含まれる値...
-
SELECT INTOで一度に複数の変数...
おすすめ情報