hiroton
2022/05/25 (水) 17:50:31
572d7@f966d
「仕入テーブル」に売上IDフィールドを設けてクエリで結合して差額を計算します
売上IDは「売上テーブル」の主キーです(「売上テーブル」には主キーが必要です)
次のようなイメージになります(質問事項に不要な項目は省いています)
売上テーブル
売上ID | 売上額 |
---|---|
1 | 1000 |
2 | 2000 |
仕入テーブル
仕入ID | 仕入額 | 売上ID |
---|---|---|
1 | 500 | 1 |
2 | 800 | 2 |
受注クエリ
仕入ID | 仕入額 | 売上ID | 売上額 | 差額 |
---|---|---|---|---|
1 | 500 | 1 | 1000 | 500 |
2 | 800 | 2 | 2000 | 1200 |
通報 ...
補足
売上テーブル側に仕入IDを設ける形でも同様のクエリは作成できますが、内製品で仕入が発生しない売上のことを考えると「売上のレコードに於いて仕入IDが存在しないのが正しい」状態が起こりえます。
未入力(未処理)なのか、空白で正解なのか、一見してわからないような構造を作ると管理の手間が増えます
フィールドは全てデータで埋まるような構造にするのが基本です
ということで、仕入テーブル側に売上IDフィールドを設ける方法を提示していますが、「仕入れたけど売れなかった」は実務上たいてい起こるので、提示例も最適解とは言えません
「Accessでちょこっとやるだけなら運用で対応するから別にいいかな」とか、
「実務上でそういうデータが省かれた最終データしか扱わない」とか
ホントにこれだけで済む場合もあります
もう少し深く作るなら「受注テーブル」を用意する(売上テーブルとは別に)となります
受注テーブル
↑ここに登録のない売上ID,仕入IDは未処理ということ
それらのデータはクエリで抽出できる(未処理データの管理画面や警告表示を作ったりできる)
さらに掘り下げると「1つの売上に対して複数の仕入れが発生する」場合も考えられます(逆もあり)。この場合は上記「受注テーブル」ではうまくいかなさそうなので、さらに手を加えることになります