首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨多个表的MS Access查询显示减少的结果

跨多个表的MS Access查询显示减少的结果
EN

Stack Overflow用户
提问于 2020-08-05 06:12:05
回答 1查看 33关注 0票数 0

我有一个员工的主列表,我需要在多个表中运行查询。每次我添加另一个表时,我都会得到减少的结果。我怀疑这是因为它在所有表中查找结果,并且只有在所有表中都存在结果时才显示它们。我需要显示结果,即使它是空的。

代码语言:javascript
复制
Employee Table
Employee     Status
Employee 1   Active
Employee 2   Inactive
Employee 3   Active

FICO Records
Employee     Week      Score
Employee 1   7/19/20   150
Employee 2   7/19/20   150   
Employee 1   7/12/20   250
Employee 2   7/12/20   350
Employee 3   7/12/20   200

Scorecard Records
Employee 1   7/19/20   Great
Employee 2   7/19/20   Great
Employee 3   7/19/20   Great
Employee 1   7/12/20   Great
Employee 2   7/12/20   Great
Employee 3   7/12/20   Great

预期结果如下:在本例中,该表列出了所有活动员工,并显示了参数week设置为7/19/20的结果。员工2被丢弃,因为他们处于非活动状态。Employee 1显示两个列的结果,因为他们在两个表中都有记录。员工3只在记分卡中显示结果,因为他们没有FICO记录。

代码语言:javascript
复制
Employee     Week      FICO     Scorecard
Employee 1   7/19/20   150      Great
Employee 3   7/19/20            Great

这些是我目前得到的结果

代码语言:javascript
复制
Employee     Week      FICO     Scorecard
Employee 1   7/19/20   150      Great

这是我在MS Access中使用查询设计工具构建的代码。我试过使用left join,它不会改变结果。请帮帮忙。

代码语言:javascript
复制
PARAMETERS [Week Date] DateTime;
SELECT
   [DA Master].[DA Name],
   [DA Master].Status,
   [DA AMZL Scorecard].[Overall Tier],
   [DA Fico].Week,
   [DA Fico].FICO 
FROM
   (
      [DA Master] 
      INNER JOIN
         [DA AMZL Scorecard] 
         ON [DA Master].ID = [DA AMZL Scorecard].DA
   )
   INNER JOIN
      [DA Fico] 
      ON [DA Master].ID = [DA Fico].DA 
WHERE
   (
(([DA Master].Status) = "Active") 
      AND 
      (
([DA Fico].Week) = [Week Date]
      )
   )
ORDER BY
   [DA Master].[DA Name];
EN

回答 1

Stack Overflow用户

发布于 2020-08-07 04:48:00

有一张包含所有星期日期的表格吗?如果不是,则UNION查询可以完成该操作,并创建所有员工/周对的数据集。

代码语言:javascript
复制
SELECT Employee, Week FROM Employees, FICO 
UNION SELECT Employee, Week FROM Employees, Scorecard;

可以包含Employees表中感兴趣的任何其他字段,也可以在后续查询中包含Employees表。

现在在另一个查询中使用该查询,该查询使用Employee和Week字段上的FICO和Scorecard表进行复合连接。

每个SELECT都是一个笛卡尔乘积查询。请注意,这些类型的查询执行起来可能很慢。

否则,FICO或Scorecard将需要为每个员工/周对提供一条记录,以便它可以充当其他两个表可以联接到的“主”表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63255773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档