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

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

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

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

Q&A

解決済

1回答

2216閲覧

Access クエリで同じフィールド名を使う方法

D0NKAMA

総合スコア28

Access

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

0グッド

0クリップ

投稿2021/11/26 04:21

前提・実現したいこと

特定フィールドの値を"0"にし、それを別テーブルへ上書きする処理を一つのクエリで行いたい。

説明

1.不一致クエリで、店コードが変更された行を抽出
2.更新クエリで、抽出した「売上」を"0"にする
3.更新クエリで、変更したデータをDBに上書きする


処理前
DB
|通番|店コード|店名|売上|
|:--|:--:|--:|
|1|001|ファミマ|500|
|2|002|ローソン|600|
|3|003|セブン|700|

CSV
|通番|店コード|店名|売上|
|:--|:--:|--:|
|1|001|ファミマ|500|
|2|999|ローソン|600|
|3|003|セブン|700|

処理後
DB
|通番|店コード|店名|売上|
|:--|:--:|--:|
|1|001|ファミマ|500|
|2|999|ローソン|0|
|3|003|セブン|700|

試したこと

参考にしたサイトで「:」を使って別名として扱えることを知り、フィールドに別名を入れると「式1:」というのが勝手についてしまいます。
計算式でしか利用できないのでしょうか?

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

Access 2016

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

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

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

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

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

guest

回答1

0

ベストアンサー

フィールドに別名を入れると「式1:」というのが勝手についてしまいます。

その「式1」の部分をご希望の名前に変更すればいいでしょう。
ただ、

1.不一致クエリで、店コードが変更された行を抽出

2.更新クエリで、抽出した「売上」を"0"にする
3.更新クエリで、変更したデータをDBに上書きする

この操作の中で別名を使う必要のある操作はないと思いますが、どの場面で何をすることができていないのでしょうか。

投稿2021/11/26 05:00

hatena19

総合スコア34075

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

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

D0NKAMA

2021/11/26 05:43

説明不足でしたすみません! できない部分は2と3の箇所です。訳あって画像を載せられないので図で説明します。 フィールド : 売上 | ・・・ | 店名 | 売上 | テーブル : T_不一致 | ・・・ | T_DB | T_DB | レコード更新:  0 | ・・・ |[T_不一致].[店名] | [T_不一致].[売上] | ※図はクエリデザインビュー画面の下部分です。 1列目で2の作業をしており、2列目以降は3の作業をしています。最初と最後の列で同じ「売上」を使用しているため「'T_DB'が'重複しています」と表示されます。 3の作業の際、「T_DB」の各項目に「T_不一致」の各項目を代入しているのですが、そもそもこの記述方法が間違っているのでしょうか。
hatena19

2021/11/26 06:08

> 最初と最後の列で同じ「売上」を使用しているため「'T_DB'が'重複しています」と表示されます。 フィールド名が同じでもテーブルが異なるので問題ないはずです。 「'T_DB'が'重複しています」というエラーメッセージもフィールド名でないので変ですね。 どこか間違っているのだと思います。 SQLビューにして表示されるSQL文を提示してもらえませんか。
D0NKAMA

2021/11/26 06:34

度々すみません、エラーメッセージが少し違っていました。 正しくは「出力先'T_DB.売上'が重複しています。」です。 フィールド : 売上 | 売上 | テーブル : T_不一致 | T_DB | レコード更新:  0 | [T_不一致].[売上] | ※上記のデザインビューの状態で表示したSQL文です UPDATE T_不一致 INNER JOIN T_DB ON T_不一致.通番 = [T_DB].通番 SET T_不一致.[売上] = 0, [T_DB].[売上] = [T_不一致].[売上];
hatena19

2021/11/26 07:45

提示のSQLだと、T_不一致.[売上] を 0 にしてますが、やりたいことは、 T_DBの、店コードの更新と売り上げを0にすることだと思いますので、 UPDATE T_不一致 INNER JOIN T_DB ON T_不一致.通番 = [T_DB].通番 SET T_DB.店コード=T_不一致.店コード, T_DB.[売上] = 0; となるのでは。
hatena19

2021/11/26 16:15 編集

T_不一致というのがよく分かりませんが、 CSVをリンク(あるいはインポート)したテーブル名を T_CSV として、 下記の更新クエリでご希望の結果が得られると思います。 UPDATE T_DB INNER JOIN T_CSV ON T_DB.通番 = T_CSV.通番 SET T_DB.店コード = T_CSV.店コード, T_DB.売上 = 0 WHERE T_DB.店コード<>T_CSV.店コード;
D0NKAMA

2021/11/26 09:49

私の拙い説明のせいでお時間をかけてしまい申し訳ありませんでした。おかげ様で問題解決しました。 問題解決だけでなく、不一致テーブルの処理を簡略化できるSQLを提示していただき本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問