質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1551閲覧

Accessで同じテーブルの条件が一致した内容と同じレコードを追加

kazumi_7

総合スコア21

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2023/08/29 00:33

編集2023/08/29 02:49

実現したいこと

特定の商品番号と同じ内容で、一部分だけ変更したレコードを新規追加したいです。
前提に載せたテーブルで、商品番号がBB1のレコードのみ、店番号、客番号、数量をコピー、商品番号をCC1に変更した新規レコードを作りたいです。
別テーブル・別クエリを作る方法で実現はできましたが、クエリかAccessSQL一回で追加できたらと思いました。

前提

使うテーブルは以下のような内容です。

Access

1ID|店番号|客番号|商品番号|数量| 21 |011 | 001 | BB1 | 1 | 32 |011 | 002 | AA1 | 2 | 43 |011 | 003 | BB1 | 2 |

主キーはIDでオートナンバー型。
店番号は全行共通、数量以外の店番号、客番号、商品番号は短いテキスト型です。

希望完成テーブル

Access

1ID|店番号|客番号|商品番号|数量| 21 |011 | 001 | BB1 | 1 |(条件に一致) 32 |011 | 002 | AA1 | 2 | 43 |011 | 003 | BB1 | 2 |(条件に一致) 54 |011 | 001 | CC1 | 1 |←新規 65 |011 | 003 | CC1 | 2 |←新規

発生している問題・エラーメッセージ

クエリデザインで設定してSQLビューで修正したところ、以下のエラーが出ました。
最後にはもちろんセミコロンが入っているので、INSERT文の書き方が悪いのかとは思っています。

SQLステートメントの最後には、セミコロン(;)が必要です。

該当のソースコード

Access

1INSERT INTO テーブルA( 2 店番号, 3 客番号, 4 商品番号 5) 6VALUES( 7 店番号, 8 顧客コード, 9 "CC1" 10) 11SELECT 12 テーブルA.店番号, 13 テーブルA.客番号, 14 テーブルA.商品番号 15FROM 16 テーブルA 17WHERE 18 ( 19 (テーブルA.商品番号) = "BB1" 20 ) 21;

試したこと

各項目欄に括弧[]をつけたり、テーブルが一件しかないのでSELECT文からテーブル名を削除したり、テーブルに別名をつけてみたりしてみました。
エラーメッセージが変わるだけでできていません。

補足情報(FW/ツールのバージョンなど)

Access for Microsoft 365 MSO 32 ビット版

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

logres_Fan

2023/08/29 00:46 編集

商品CC1の数量は、商品BB1の数量と常に同じ数になるの?
kazumi_7

2023/08/29 00:50

はい、そうです。 細かい話を書くと、BB1という商品はCC1とDD1という二種類の商品をセットにしたものです。 なので、CC1をBB1と同じ数量分増やしてから、最後にBB1をDD1という名前に変更する予定です。
guest

回答1

0

ベストアンサー

INSERT INTO ステートメント (Microsoft Access SQL)

INSERT INTO ~ VALUES(単一レコード追加クエリ)とINSERT INTO ~ SELECT(複数レコード追加クエリ)は何れかしか使用できません。

SQL

1INSERT INTO テーブルB( 2 加盟店コード, 3 顧客コード, 4 商品コード 5) 6SELECT 7 加盟店コード, 8 顧客コード, 9 "CC1" as 商品コード 10FROM 11 テーブルA 12WHERE 商品コード = "BB1" 13;

投稿2023/08/29 01:36

編集2023/08/30 02:41
sazi

総合スコア25426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazumi_7

2023/08/29 02:53 編集

なるほど、複数レコードを追加したい時にVALUESは使えないんですね。 INSERT INTO ~ SELECTが複数レコード追加クエリなのは知りませんでした。 ありがとうございます。ちょっと試してみます。 元のテーブルの内容のままSQLを張り付けてしまっていたので、 大変なご迷惑をお掛け致しますが、テーブル名、フィールド名、条件の修正をお願い致します。
sazi

2023/08/30 02:41

変更しておきました。
kazumi_7

2023/08/30 06:41

ありがとうございます。 次回試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問