我有一个员工的主列表,我需要在多个表中运行查询。每次我添加另一个表时,我都会得到减少的结果。我怀疑这是因为它在所有表中查找结果,并且只有在所有表中都存在结果时才显示它们。我需要显示结果,即使它是空的。
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记录。
Employee Week FICO Scorecard
Employee 1 7/19/20 150 Great
Employee 3 7/19/20 Great这些是我目前得到的结果
Employee Week FICO Scorecard
Employee 1 7/19/20 150 Great这是我在MS Access中使用查询设计工具构建的代码。我试过使用left join,它不会改变结果。请帮帮忙。
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];发布于 2020-08-07 04:48:00
有一张包含所有星期日期的表格吗?如果不是,则UNION查询可以完成该操作,并创建所有员工/周对的数据集。
SELECT Employee, Week FROM Employees, FICO
UNION SELECT Employee, Week FROM Employees, Scorecard;可以包含Employees表中感兴趣的任何其他字段,也可以在后续查询中包含Employees表。
现在在另一个查询中使用该查询,该查询使用Employee和Week字段上的FICO和Scorecard表进行复合连接。
每个SELECT都是一个笛卡尔乘积查询。请注意,这些类型的查询执行起来可能很慢。
否则,FICO或Scorecard将需要为每个员工/周对提供一条记录,以便它可以充当其他两个表可以联接到的“主”表。
https://stackoverflow.com/questions/63255773
复制相似问题