Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
キーワードで結合する
投稿日時: 20/11/17 17:12:57
投稿者: パピープ

こんにちは。
初心者で申し訳ないのですが教えてください。
 
**行いたいこと**
テーブル2にある、コードとテーブル1のコードが同じで、
且つテーブル1のキーワード1若しくはキーワード2が一致
した場合、テーブル2の後ろにテーブル1の該当する品名を結合。
結合した結果をテーブル3として保存。
 
**各テーブルの条件**
同一のコード内ではキーワードは同じものはない。
 
テーブル1
コード 品名 キーワード1  キーワード2
001 ABC  人    リットル
001 EFG  個    トン
002 HIJ  品    皿
 
テーブル2
コード   摘   要
001 10人準備(1リットル×10本)
001 5個2階に設置
001 10日に50皿
002 5皿配膳
002 3本発注
 
摘要一致でテーブル2にテーブル1の品名を結合
コード   摘   要        品名
001 10人準備(1リットル×10本)  ABC
001 5個2階に設置         EFG
001 10日に50皿           −
002 5皿配膳            HIJ
002 3本発注            −
〇キーワードで一致しなければ「−」を表示。
 
色々試してみたのですが、うまくいきません。
宜しくお願いします。
 

回答
投稿日時: 20/11/17 18:10:25
投稿者: Suzu

SELECT テーブル2.コード, テーブル2.摘要, Nz(Tmp.品名,"-") AS 品名
FROM テーブル2 LEFT JOIN
  (SELECT テーブル2.コード, 摘要, 品名
   FROM テーブル2, テーブル1
   WHERE (InStr(摘要,キーワード1)+InStr(摘要,キーワード2)>0) AND ([テーブル2].[コード]=[テーブル1].[コード])
  ) AS Tmp
 ON テーブル2.コード=Tmp.コード AND テーブル2.摘要=Tmp.摘要
 
 
こんな感じでしょうか。
 
 
キーワード数が、上限2個程度であれば良いですが
今後、増える可能性があるなら
 
テーブル1は
 
コード  品名  キーワード
-----------------------------
001    ABC  人
001    ABC  リットル
001    EFG  個
001    EFG  トン
002    HIJ  品
002    HIJ  皿
 
の様にしておいた方が良いでしょう。

投稿日時: 20/11/19 08:31:34
投稿者: パピープ

 Suzu様
 
出来ました!
ありがとうございます!!