勉強不測で大変悩んでいます。お分かりになる方教えてください。
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も見ています
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出
Access(アクセス)
-
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
-
Accessクエリでの、LIKE条件
その他(データベース)
-
-
4
Access 別テーブルにある値を抽出条件にしたい
その他(Microsoft Office)
-
5
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
6
アクセス 部分一致の抽出
その他(Microsoft Office)
-
7
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
8
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
9
2つのテーブルに共通するレコードを削除したい
Access(アクセス)
-
10
アクセスVBAのMe!と[ ]
Access(アクセス)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
Access のリレーションシップで一部一致
その他(データベース)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
別のテーブルのフィールドを抽出項目にするには?
Access(アクセス)
-
15
ACCESS 複数テーブル・複数フィールドを参照する不一致クエリ
Access(アクセス)
-
16
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
17
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
18
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
19
accessテーブル作成クエリを実行したときにオートNo(のような)振る方法
その他(データベース)
-
20
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PayPal 期限切れ メール
-
PS4で別アカウントにデータを移...
-
承っておりません。 ↓ できませ...
-
ネットワークに詳しい方教えて...
-
どうしていけないのでしょうか?
-
高3女子です ローターやバイブ...
-
彼氏のLINEが消えました! 先日...
-
YouTubeを開いて別のアカウント...
-
DELLから届きました。詐欺メー...
-
メルカリは過去に強制退会にな...
-
質問なんですが、、前の携帯でI...
-
Thunderbird 開封確認
-
Yahoo IDが使えなくなってしま...
-
このアプリは、何回通報された...
-
LINEに使用している電話番号を...
-
学校のタブレット
-
荒野行動についてなのですが Ni...
-
ソープ嬢からの名刺
-
Fortniteについてです 僕は今ま...
-
チャットアプリから個人情報の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どうしていけないのでしょうか?
-
ネットワークに詳しい方教えて...
-
高3女子です ローターやバイブ...
-
彼氏のLINEが消えました! 先日...
-
PS4で別アカウントにデータを移...
-
PayPal 期限切れ メール
-
承っておりません。 ↓ できませ...
-
Yahoo IDが使えなくなってしま...
-
Thunderbird 開封確認
-
質問なんですが、、前の携帯でI...
-
嫌いな人を徹底的にブロックす...
-
このアプリは、何回通報された...
-
Fortniteについてです 僕は今ま...
-
LINEに使用している電話番号を...
-
メルカリは過去に強制退会にな...
-
チャットアプリから個人情報の...
-
Amazonで不正アクセスを受け、A...
-
学校のタブレット
-
この電話番号は、既に何度も確...
-
親子で共有していたAppleIDを別...
おすすめ情報