
勉強不測で大変悩んでいます。お分かりになる方教えてください。
A(マスタ_登録済)とB(マスタ_仮登録)という2つのテーブルがあり、それぞれに「アカウント」(テキスト型)というフィールドが存在しています。
Bに存在する全レコードのいづれかの「アカウント」フィールドに入力されている文字列が文字列中に含まれているAのレコードの一覧を出力したいのですが、どうしたらできるでしょうか。
たとえば、
[A]
inu
inushiba
inupo
neko
nekotama
nekoshiro
[B]
inu
nekota
とレコードがそれぞれ存在していた場合、
出力したいレコードは
inu
inushiba
inupo
nekotama
となります。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんな方法もできます。
クエリにテーブルAとBを選択、結合しない。
(上記で全結合の状態になります。)
テーブルAのみ全表示
テーブルAのアカウントの抽出条件欄に
LIKE [B]![アカウント]&"*"
もし nekoinu のように中間や後ろも出力の場合は
LIKE "*"&[B]![アカウント]&"*"
ご回答ありがとうございます。
全結合にすることを忘れてました!
列に対してワイルドカードは使えないのかな
と悩んでいましたが・・・・問題はこっちだったんですね(^^;;;
ありがとうございました!!
No.5
- 回答日時:
あ、SQL中のAとBは本当のテーブル名に置き換えてくださいね(^^;
select アカウント from マスタ_登録済
where exists
(select * from マスタ_仮登録 where マスタ_登録済.アカウント like "*" & マスタ_仮登録.アカウント & "*")
No.4
- 回答日時:
select アカウント from A
where exists
(select * from B where A.アカウント like "*" & B.アカウント & "*")
多分これでOKかと。相関副問い合わせです。
これをSQLビューに直接書き込んでみてください。
No.2
- 回答日時:
ACCESSでいいんですよね。
(どのACCESSでも同じです)選択クエリーが使えます。
1)テーブルA、テーブルBとも、アカウントのインデックスは「はい (重複なし)」、データ型も「テキスト」にそろえてください。
2)クエリーを作成します。(選択クエリー)
AとBを追加して、AのアカウントとBのアカウントを結合してください。
結合プロパティを「Aの全レコードとBの同じ結合フィールドのレコードだけを含める」としてください(結んでいる線をダブルクリックすると設定できます)
AのアカウントとBのアカウントをフィールドとして指定します。
Aの並び替えとして、「昇順」を指定します。
Bの抽出条件として、「Is Null」と指定してください。
Bの表示をしたくない場合は、Bの表示のチェックをはずしてください。
このようなクエリーとなります。
SELECT A.アカウント
FROM A LEFT JOIN B ON A.アカウント = B.アカウント
WHERE (((B.アカウント) Is Null))
ORDER BY A.アカウント;
意味は、
(Aのアカウントを表示します。)
(Aの全レコードとBの同じアカウントのレコードだけを含めます。)
(BのアカウントがNullのものだけ抽出します)
(Aのアカウントを昇順に並び替えます)
3)このクエリーを実行すると、質問のアカウントのみ残ります。
お分かりいただけますでしょうか。
ご回答ありがとうございました。
・・・が
>SELECT A.アカウント
>FROM A LEFT JOIN B ON A.アカウント = B.アカウント
>WHERE (((B.アカウント) Is Null))
>ORDER BY A.アカウント;
SQLではこのように表示されるのですが、
実行結果にはAのレコード全てが表示されて
しまいます。
何か、私のテーブルに設定漏れがあるのでしょうか(TT)
No.1
- 回答日時:
(1)Aテーブルのフィールド(A)をソートキーとして
昇(降)順でソートします。
(2)Bテーブルのフィールド(B)をソートキーとして
昇(降)順でソートします。勿論昇降順は(1)と(2)で一致させること。
(3)その際注意事項は、(1)と(2)の双方キーフィールドの文字列について、大・小文字、全・半角文字や、途中スペースや表記法(カナなら拗音を大文字か小文字かのようなことほかいろいろ)、前後スペース(TRIMで対策)、左詰め、略号と本名の混合対処などをルールを統一しておく必要があります。
(4)それが完了すると、プログラムではマッチングのアルゴリズムで両者を比較します。この場合(勿論ソート後の)テーブルBを主体にして、レコードの読みを動かします。
Aの第1レコードを読む
Bの第1レコードを読む
AとBのアカウント・フィールドを比較
Bの文字列文字数分をAの文字列から切りだして(仮にAKとなずける)考える(ここがポイント)。
(AK=B)の場合
含まれている場合で、Bのフィールドを添えてAのフ ィールドを書き出し(または印刷)
(AK>B)の場合
Bを読みに行く
上記「AとBのアカウント・フィールドを比較」に行 き以下繰り返し
(AK<B)の場合
Aを読みに行く
上記「AとBのアカウント・フィールドを比較」に行 き以下繰り返し
Aの終了で処理終了。
だだ困ったことにBのアカウントフィールドの中の前後に
同じ語句が含まれているとこのロジックは混乱する。
例えば猫と猫舌、猫なで声がBのアカウントフィールドに続く場合です。Bの猫のAの検索で猫舌や猫舌研究もリストアップされるのでそれで済むなら、Bの猫舌は処理スキップする手も考えられる。それは困ると言うなら、猫のつくAのフィールドをB猫処理後もワークエリアに蓄え、Bに猫舌が出たとき、蓄えたところを探す。蓄えはBの猫含みキーが去った段階で廃棄する。
前記のようなことが無ければ、RDMSではSQLのCONTAINS句が使えるかもしれない。
また上記は前方一致で考えているが途中一致も考えるとなるとロジックが変ると思う。SQLのCONTAINSや
LIKEで考えて見てください。
早速のご回答ありがとうございます。
こんな手があるのですね。。。
>また上記は前方一致で考えているが途中一致も考えるとな>るとロジックが変ると思う。
前方一致だけで問題なしです。
Bのテーブルに入る単語の制限は半角ということしか
かけていないので、
neko neko1 neko2
という形で存在します。
ある人からある名前(neko)でAに登録したいといわれたとき、システム上重複は許さないので、先勝ちでnekoの後に番号を自動または手動で付与して(neko3)という名前で
登録することを了承させるということがしたいのです。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
-
Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出
Access(アクセス)
-
Accessクエリでの、LIKE条件
その他(データベース)
-
-
4
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
5
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
6
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
7
Access 別テーブルにある値を抽出条件にしたい
その他(Microsoft Office)
-
8
別のテーブルのフィールドを抽出項目にするには?
Access(アクセス)
-
9
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
10
OR関数
その他(Microsoft Office)
-
11
アクセス 部分一致の抽出
その他(Microsoft Office)
-
12
iif関数で3つ以上条件を抽出したい場合
IT・エンジニアリング
-
13
アクセスで『0の値以外』を表示する方法
Access(アクセス)
-
14
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
15
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
16
Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか?
Access(アクセス)
-
17
ACCESS テーブルを見比べて、一致したレコードを抽出したいです
Access(アクセス)
-
18
Accessのデータのインポートで重複分を排除
その他(Microsoft Office)
-
19
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
20
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ヤフーアカウントについての質...
-
Yahoo IDが使えなくなってしま...
-
スマホとパソコンのLINEの連動...
-
デッドバイデイライトモバイル...
-
自称「Amazon」から変なメール...
-
Yahoo!でログインしようとする...
-
pc版マインクラフトjava版につ...
-
高3女子です ローターやバイブ...
-
親子で共有していたAppleIDを別...
-
アウトルックの送信ボタンが押...
-
このアプリは、何回通報された...
-
Outlookの不要アカウント(受信...
-
docomoのスマホとタブレットを...
-
承っておりません。 ↓ できませ...
-
学校のタブレット
-
ネットワークに詳しい方教えて...
-
会社のパソコンなんですが、 退...
-
Yahoo知恵袋で昨日の夜質問を投...
-
Amazonの退会
-
PS4から5にデータ移行しようと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahoo IDが使えなくなってしま...
-
ヤフーアカウントについての質...
-
高3女子です ローターやバイブ...
-
この電話番号は、既に何度も確...
-
学校のタブレット
-
XFLAG、IDに登録済みメールアド...
-
親子で共有していたAppleIDを別...
-
Yahoo!でログインしようとする...
-
PS4でAPEXを始めたくてEAアカウ...
-
複数の任天堂アカウント使用し...
-
docomoのスマホとタブレットを...
-
PS4のNetworkのサインインにつ...
-
ヤフー知恵袋でこの様なメッセ...
-
ChatGPTのアカウントについて
-
Yahoo知恵袋で昨日の夜質問を投...
-
Outlookの不要アカウント(受信...
-
♪問題っ!♪ズンッ!チャッ!(...
-
荒野行動で、LINE連携したらリ...
-
このアプリは、何回通報された...
-
会社のパソコンなんですが、 退...
おすすめ情報