Access (一般機能)

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

 
(Windows 10 Pro : Access 2016)
他のテーブルに保存した日付によるクエリでの抽出
投稿日時: 19/05/12 12:24:19
投稿者: Manabukunn

いつもお世話になっております。
 
"治療歴”というテーブルに”薬剤名””使用量””開始日””中止日””患者ID”が
 
”薬剤名””使用量””開始日”  ”中止日” ”患者ID”
 X     50    2019/5/21 2019/6/20   1
 X     100    2019/6/21 2019/7/20   1
 Y 40 2019/7/21 2019/8/20 1
当い感じでデータが入力
 
これとは別に
”受診日”というテーブルに”受診日ID” ”患者ID””受診日”などのフィールドが存在する
テーブルがあります。
 
 
今回やりたいこととしては”治療歴”テーブルの”薬剤名”が”X”であるものが使用されている期間のみの”受診日”テーブルのデータをクエリで抽出したいと考えております。
 
上の例ですと
2019/5/21〜2019/7/20までの期間のものを抽出という感じです。
 
”受診日”テーブルの”受診日”フィールドの抽出条件に
 
Between (SELECT Min(開始日) FROM 治療歴) And (SELECT Max(変更中止日) FROM 治療歴)
 
のようなものを試行錯誤でやってみたのですが一応エラー無く認識されるのですが
まったく機能せず、またこのままでは”X”が使用されているといはならないです・・
解決方法お願いいたします。
 

回答
投稿日時: 19/05/13 09:20:05
投稿者: hatena
投稿者のウェブサイトに移動

クエリで 治療歴 と 受診日 のテーブルを追加します。
 
2つのテーブルを 患者ID フィールドで結合します。
 
薬剤名 フィールドの抽出条件に、抽出したい薬剤名を設定(今回は"X")
 
受信日 フィールドの抽出条件に、
Between [開始日] And [中止日]
を設定。
 
これで、希望の結果になりませんか。

投稿日時: 19/05/13 20:42:25
投稿者: Manabukunn

hatenaさんいつもありがとうございます。
 
一応、理解したつもりですが確認させてください。
 

引用:
クエリで 治療歴 と 受診日 のテーブルを追加します。
  
2つのテーブルを 患者ID フィールドで結合します。

 
とはすなわちクエリの画面で両方のテーブルを表示して
患者IDでリレーションを作成するときのように結合させると
いうことで結果として
ある患者IDの治療歴の全保存データと全受診データを結合させる
そして結合させたデータの中で受診日が開始日と中止日の間に
あるものを選択するという解釈でよろしいでしょうか。

回答
投稿日時: 19/05/13 21:08:37
投稿者: hatena
投稿者のウェブサイトに移動

はい、その通りです。
 
SQLだと、
 

SELECT 受診日.*
FROM 受診日 INNER JOIN 治療歴 ON 受診日.患者ID = 治療歴.患者ID
WHERE 治療歴.薬剤名="X" AND 受診日.受診日 Between 治療歴.開始日 And治療歴.中止日; 

投稿日時: 19/05/13 21:42:28
投稿者: Manabukunn

hatenaさん有難うございました。
この様な方法は全く頭に思いつかず
せっかく作成したのに目的のデータを
取れなくては何の意味もないので非常に助かりました。
 
最後に、質問を追加させてください。
最終的にデータは
500×6000くらいにはなると思いますが
(もっと増えれば嬉しい状況ですが・・)
これくらいであれば今どきのPCなら問題なく
処理は可能と考えてよろしいでしょうか。

回答
投稿日時: 19/05/14 09:13:18
投稿者: hatena
投稿者のウェブサイトに移動

Manabukunn さんの引用:
最終的にデータは
500×6000くらいにはなると思いますが
(もっと増えれば嬉しい状況ですが・・)
これくらいであれば今どきのPCなら問題なく
処理は可能と考えてよろしいでしょうか。

 
インデックスを適切に設定してあれば、そのぐらいなら大丈夫だと思います。
 
インデックスを設定すべきフィールド
 
治療歴の 薬剤名 患者ID
(開始日 中止日 もあった方がいいかも)
 
受診日の 患者ID 受診日
 
ダミーのデータを作成して、いろいろ実際に試してみることをお勧めします。
 
薬剤は別に、マスターテーブルを作成したほうがいいかも知れません。
 
 

投稿日時: 19/05/15 11:06:23
投稿者: Manabukunn

hatenaさん。有難うございました。
いろいろと試してみようと思います。
今後ともよろしくお願いいたします。