Access (一般機能)

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

 
(Windows 10 Pro : Access 2016)
複数のテーブルから日付が一致するものを抽出する
投稿日時: 20/09/30 16:30:11
投稿者: パピープ

こんにちは。
教えて頂けると幸いです。
 
以下のように3つのテーブルがあります。
 
TBL_01
代理店CD 代理店名称
XXX-YYYY ABC商店
 
TBL_02
代理店CD 販売年月日 販売量
XXX-YYYY 2020/07/31 150.000Kg
XXX-YYYY 2020/08/31 500.000Kg
 
TBL_03
代理店CD 売掛年月日 金額
XXX-YYYY 2020/07/31 15,000
XXX-YYYY 2020/08/31 50,000
 
TBL_01〜03を一表にします。
選択クエリを実行する際に、パラメータで抽出対象の年月日を指定します。
指定された年月日に一致するデータをTBL_02とTBL_03から抽出し、以下のように
表示をさせる。
 
選択クエリ
代理店CD 代理店名称 年月日   販売量  金額
XXX-YYYY ABC商店  2020/08/31 500.000Kg 50,000
 
お手数をお掛けしますが、ご教授頂けると幸いです。

回答
投稿日時: 20/09/30 23:10:50
投稿者: よろずや

TBL_02, TBL_03 の片方にしかデータが無いケースも考慮すると
概ねこんな感じかと。
 

SELECT A.代理店CD, TBL_01.代理店名称, A.年月日, TBL_02.販売量, TBL_03.金額
FROM (
SELECT 代理店CD, 販売年月日 AS 年月日 FROM TBL_02 WHERE <日付範囲指定>
UNION
SELECT 代理店CD, 売掛年月日 AS 年月日 FROM TBL_03 WHERE <日付範囲指定>
) AS A
LEFT JOIN TBL_01 ON TBL_01.代理店CD = A.代理店CD
LEFT JOIN TBL_02 ON TBL_02.代理店CD = A.代理店CD AND TBL_02.販売年月日 = A.年月日
LEFT JOIN TBL_03 ON TBL_03.代理店CD = A.代理店CD AND TBL_03.売掛年月日 = A.年月日;

回答
投稿日時: 20/09/30 23:13:17
投稿者: よろずや

TBL_02, TBL_03 の片方にしかデータが無いケースも考慮すると
概ねこんな感じかと。
 

SELECT A.代理店CD, TBL_01.代理店名称, A.年月日, TBL_02.販売量, TBL_03.金額
FROM (((
SELECT 代理店CD, 販売年月日 AS 年月日 FROM TBL_02 WHERE <日付範囲指定>
UNION
SELECT 代理店CD, 売掛年月日 AS 年月日 FROM TBL_03 WHERE <日付範囲指定>
) AS A
LEFT JOIN TBL_01 ON TBL_01.代理店CD = A.代理店CD)
LEFT JOIN TBL_02 ON TBL_02.代理店CD = A.代理店CD AND TBL_02.販売年月日 = A.年月日)
LEFT JOIN TBL_03 ON TBL_03.代理店CD = A.代理店CD AND TBL_03.売掛年月日 = A.年月日;

投稿日時: 20/10/01 11:20:15
投稿者: パピープ

よろずや さんの引用:
TBL_02, TBL_03 の片方にしかデータが無いケースも考慮すると
概ねこんな感じかと。
 
SELECT A.代理店CD, TBL_01.代理店名称, A.年月日, TBL_02.販売量, TBL_03.金額
FROM (((
SELECT 代理店CD, 販売年月日 AS 年月日 FROM TBL_02 WHERE <日付範囲指定>
UNION
SELECT 代理店CD, 売掛年月日 AS 年月日 FROM TBL_03 WHERE <日付範囲指定>
) AS A
LEFT JOIN TBL_01 ON TBL_01.代理店CD = A.代理店CD)
LEFT JOIN TBL_02 ON TBL_02.代理店CD = A.代理店CD AND TBL_02.販売年月日 = A.年月日)
LEFT JOIN TBL_03 ON TBL_03.代理店CD = A.代理店CD AND TBL_03.売掛年月日 = A.年月日;

 
回答ありがとうございました。