teratail header banner
teratail header banner
質問するログイン新規登録
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

518閲覧

アクセスでサブクエリを使いたいです

kadoyaca1

総合スコア1

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2022/05/13 14:30

編集2022/05/22 10:43

0

0

AccessのSQL文で入荷数と使用履歴から現在残数を出すSQL文を作成しています。
Dsum関数で作ったSQL文をサブクエリに変更する方法が分かりません。
クエリで、一定日の物品IDごと・使用者IDごとの使用数と、
一定日での物品IDごとの残数を出します。(下記では日付は5/13としています)
どのように変更すればよいでしょうか。
よろしくお願いします。

入荷数テーブル

物品ID入庫数
001300
002250

使用履歴テーブル

物品ID使用者ID使用数使用日
001001202022/05/09
001002102022/05/09
001001302022/05/11
001001102022/05/13
001002202022/05/13
002003102022/05/13

SQL

1SELECT 使用履歴.物品ID, 使用履歴.使用者ID, 使用履歴.使用数, 使用履歴.使用日, [入荷数]-Nz(DSum("使用数","使用履歴","物品ID='" & [使用履歴].[物品ID] & "' AND 使用日<#2022/5/13#"),0) AS 残数 2FROM 使用履歴 INNER JOIN 入荷数 ON 使用履歴.物品ID = 入荷数.物品ID 3WHERE (((使用履歴.使用日)=#5/13/2022#)) 4ORDER BY 使用履歴.物品ID, 使用履歴.使用者ID;

実行結果

物品ID使用ID使用数使用日残数
001001102022/05/13240
001002202022/05/13240
002003102022/05/13250

DSum関数の部分をクエリにしました。

SQL

1SELECT 使用履歴.物品ID, Sum(使用履歴.使用数) AS 使用数の合計 2FROM 使用履歴 3WHERE (((使用履歴.[使用日])<#5/13/2022#)) 4GROUP BY 使用履歴.物品ID;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YT0014

2022/05/14 00:44

DSum関数のみをクエリに書き換えることはできますか? 条件の物品IDの代わりに物件ID毎の合計を示すクエリとして。 可能なようなら質問文を修正して、ご提示ください。 できないようなら集計関数や集計クエリなどの理解をお進めください。
guest

回答1

0

ベストアンサー

sql

1DSum("使用数","使用履歴","物品ID='" & [使用履歴].[物品ID] & "' AND 使用日<#2022/5/13#")

をサブクエリに書き換えると下記のようになります。

sql

1(SELECT SUM(使用数) FROM 使用履歴 AS A 2WHERE 物品ID=A.物品ID AND 使用日<#2022/5/13#)

メインと同じテーブルは別名をつけるようにするといいでしょう。

投稿2022/05/14 02:47

hatena19

総合スコア34367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kadoyaca1

2022/05/22 10:45

ありがとうございます。サブクエリにできました。 サブクエリ箇所、「物品ID=A.物品ID」だと、実行結果は物品ID001は正しく残数240になったのですが、 物品ID002は残数190になったので、「使用履歴.物品ID=A.物品ID」に変更したら、 物品IDの001の残数も正しく250になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問