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

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

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

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

Q&A

解決済

2回答

1183閲覧

レコード内の重複文字を削除

dondo

総合スコア5

Access

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

0グッド

1クリップ

投稿2020/03/18 03:52

編集2020/03/18 09:38

前提・実現したいこと

ステップ1:【テーブルA】に追加したいキーワードを設定。
ステップ2:【テーブルA】の追加キーワードと【テーブルB】の文字列を合体。
ステップ3:【テーブルA】にある追加キーワードが、【テーブルB】に既にある場合は、重複してしまうので削除したい。

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

上記のステップ3ができない状況。レコード内に重複文字があった場合、削除する方法がしりたい。
※【テーブルA】に入力する追加キーワードは、いつも一緒ではない。

該当のソースコード

ソースコード

試したこと

・仮結合フィールドを作成し、重複の可能性があるキーワードを削除
仮結合:Replace([テーブルB].[文字列], [テーブルA].[追加キーワード], "")

・結合フィールドを作成し、重複削除した【テーブルA】の追加キーワードと【テーブルB】の文字列を結合
結合:仮結合& [テーブルA].[追加キーワード]

上記のような設定方法は、そもそもできないのか、うまくいきませんでした。
クエリを動かすと「抽出条件でデータ型が一致しません」という表記がでました。

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

【318追記】

お答えいただいたお二人の方、ご連絡いただきありがとうございます。
また、明確な質問ではなく申し訳ございませんでした。
以下にやりたいことを書き直したので、再度ご教授いただけると助かります。

処理に使うテーブル

■テーブルA

追加キーワードSALE日付
SALE2019/11/10 10:23

※テーブルAのレコードは1つのみになります。フィールドは複数あります。

■テーブルB

商品名価格
デスク キッチン SALE7,980
椅子 キッチン7,980

※テーブルBのレコード・フィールドは複数あります。

処理後に欲しい結果

テーブルAとテーブルBを結合し、
クエリで下記のような結果を返して欲しいです。

商品名価格SALE日付
デスク キッチン SALE7,9802019/11/10 10:23
椅子 キッチン SALE7,9802019/11/10 10:23

※テーブルAの追加キーワードと、テーブルBの商品名を結合して、結果をクエリに表示します。
その際にすでに、テーブルAの追加キーワードが、結合する商品名にある場合、重複してしまうのを防ぎたいです。
(フィールド内の重複文字を削除)

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

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

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

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

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

hatena19

2020/03/19 03:50 編集

「レコード内の重複文字を削除」とは、 フィールド内の特定の文字を削除するという意味か、 文字が重複するレコードを削除するという意味か、 どちらでしょうか。 Replaceを使っているところから前者かと推測しますが。 saziさんの回答は後者の解釈ですね。 前者の場合、クエリで結果が取得できればいいのか、テーブルのデータ自体を更新したいのか、もどちらでしょうか。 あと、テーブルAのレコード数は1件でしょうか、それとも複数あるのでしょうか。 どちらにしても、現状のテーブルのデータ例を示して、そこからどのような結果が欲しいのか実例を出してもらえると誤解がなく伝わると思います。
guest

回答2

0

ベストアンサー

※テーブルAの追加キーワードと、テーブルBの商品名を結合して、結果をクエリに表示します。

その際にすでに、テーブルAの追加キーワードが、結合する商品名にある場合、重複してしまうのを防ぎたいです。
(フィールド内の重複文字を削除)

下記のようなSQLでどうでしょうか。

SQL

1SELECT 2 Replace(テーブルB.商品名, 追加キーワード, "") & 追加キーワード AS 商品名, 3 価格, SALE日付 4From テーブルB, テーブルA;

投稿2020/03/18 11:05

編集2020/03/18 11:18
hatena19

総合スコア33715

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

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

dondo

2020/03/19 03:46

上記で記載いただいた内容で解決しました! ご回答ありがとうございました。
guest

0

単純に一つのキーワードが項目に格納されているという事なら、重複しているものを対象に削除クエリーで良いと思います。

SQL

1delete [テーブルA].* 2from [テーブルB] inner join [テーブルA] 3 on [テーブルB].[文字列] = [テーブルA].[追加キーワード]

または

SQL

1delete [テーブルA].* 2from [テーブルA] 3where [追加キーワード] in ( 4 select [文字列] from [テーブルB] 5 )

投稿2020/03/18 04:12

編集2020/03/18 04:14
sazi

総合スコア25188

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問