Access (一般機能)

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

 
(Windows 10 Pro : Access 2016)
選択クエリを使用してクエリを作成する
投稿日時: 21/02/02 14:29:31
投稿者: マヨイ

例えば
テーブルA(商品テーブル)
カラム:商品番号 単価
テーブルB(日々の売り上げテーブル)
カラム:日付 商品番号 売上個数
テーブルC(積み上げテーブル)
カラム:日付 商品番号 単価 売上個数 合計
という三つのテーブルがあった際に
テーブルAとテーブルBで選択クエリにより商品番号の同じものを抜き出してその選択クエリを元に追加クエリにてテーブルCへ積み上げる場合と
テーブルAとテーブルBでテーブル作成クエリで別のテーブル(テーブルD)を作ってからテーブルCへ積み上げる場合では何か違いはありますでしょうか?
(テーブルの数が増えてしまうこと以外)
 
わかりづらくて申し訳ありません。
クエリの条件に別のクエリを指定するのと一旦別のテーブルを作成してからクエリで使用するのではどちらが良いのか気になってご質問しました。
どうぞよろしくお願いいたします。

回答
投稿日時: 21/02/02 14:51:15
投稿者: sk

引用:
テーブルAとテーブルBで選択クエリにより商品番号の同じものを抜き出して
その選択クエリを元に追加クエリにてテーブルCへ積み上げる場合と
テーブルAとテーブルBでテーブル作成クエリで
別のテーブル(テーブルD)を作ってからテーブルCへ積み上げる場合では
何か違いはありますでしょうか?
テーブルの数が増えてしまうこと以外

実行速度。
 
引用:
クエリの条件に別のクエリを指定するのと
一旦別のテーブルを作成してから
クエリで使用するのではどちらが良いのか

どのような観点からの「良い/悪い」についておっしゃっているのかが不明瞭ですが、
実際にどのような演算/集計を行おうとしているのか等、
それぞれのケースによると思います。

回答
投稿日時: 21/02/02 15:39:09
投稿者: Suzu

テーブルD 経由する優位性として
・単純な 追加クエリ にて テーブルCに対して追加できない場合
  ユニークキーの重複がある等、データチェックが必要であるが、
   一端、ワークテーブルとも言える テーブルD を介したほうが速度向上を見込める場合
 
・テーブルD、テーブルD'の様に履歴を残す事ができる ⇒ テーブル数が増える/ファイル容量が増える
 (テーブルC に追加する段階で、テーブルへの追加日付をフィールドとして持たせる事でも対応可)
 
・ファイルが共有されており、同時アクセスにおけるレコードロックを最低限にしたい場合
 
あたりでしょうか。
 
 
次回、同じ処理は発生するのですよね?
その時、テーブルD は、どうされるのでしょうか?
・削除してから、テーブルD を作成
・テーブルD はそのままで、別名の テーブルD' を作成する
 
どちらかとは思うのですが、結局は、テーブルD は使わなくなるのであれば、
「テーブル作成クエリ」にする意図がわかりません。
「追加クエリ」「削除クエリ」の組み合わせで良いと思います。
  強いて挙げるなら、インデックスがつかない 事でしょうけど。。
  初めから、インデックスのついていない テーブルD を用意すれば済む話であり
 
オブジェクトの生成/削除は、ファイル破損の一因であると思っていますので
少なくとも「テーブル作成クエリ」は使用しません。

投稿日時: 21/02/09 15:56:09
投稿者: マヨイ

Suzu様 sk様
大変詳しくありがとうございました。
 
現在複数名でACCESSを使用しているため
・ファイルが共有されており、同時アクセスにおけるレコードロックを最低限にしたい場合
は大変考えないといけないと思いました。レコードロックを最小限にするようテーブルDを使用して処理をしたいと思います。
またお恥ずかしながらテーブル作成クエリもファイル破損の原因となることを初めて知り、改めたいと思います。
 
ご解答ありがとうございます。