3

我有以下 MS access (2010) 数据库:

数据库图

Employee、Period 和 Operation 表已填充,而 UnitOfWork 表为空白。

基本上,我有一些物品是由多名工人(员工)生产的。每个项目都需要多次操作(每个工人可以对任何项目进行任意次数的任何操作)。所有操作都有一些成本,我需要生成每个员工“本月”赚了多少、他是否完成了计划等的报告。

我想做一个 SELECT 来查看以下内容:UnitOfWorks,适用于 Employee、Period 和 Operation 的每个可用组合。

换句话说,我想在结果中选择 Employee、Period 和 Operation 和 LEFT JOIN UnitOfWork 的所有可能组合,因此我可以为每个 UnitOfWork 输入 OperationsDone。我将添加 WHERE 子句和 ORDER 以及稍后

我认为 CROSS JOIN 会有所帮助(在 MS Access 中,它只是用逗号进行枚举),如下所示:

SELECT * FROM (Employee, Period, Operation)
LEFT JOIN UnitOfWork on UnitOfWork.OperationId=Operation.OperationId

但是当我执行这个查询时,我得到一个“JOIN 操作中的语法错误”错误。

我也试过这样:

SELECT * FROM Employee AS e LEFT JOIN
(Period AS p LEFT JOIN UnitOfWork AS uow ON p.PeriodId=uow.PeriodId)
on e.EmployeeId=uow.EmployeeId

这些只是我需要的 3 个联接中的 2 个,但是已经有了这个我得到“不支持 JOIN 表达式”错误。

任何数据库设计建议也值得赞赏 - 这是我正在设计的一个新数据库,我是一个 SQL 新手。

提前致谢!

更新:我也在想,也许我应该尝试一个子查询?就像在一个查询中进行交叉连接(操作、员工和期间),然后将 UnitOfWork 左连接到查询结果......但是如何“通过多个字段”进行 JOIN?以及如何在访问中实现子查询?

4

1 回答 1

1

试试这种方式:

SELECT * FROM (Employee AS e LEFT JOIN UnitOfWork AS uow ON e.EmployeeId=uow.EmployeeId)
              LEFT JOIN Period AS p on p.PeriodId=uow.PeriodId
于 2012-05-09T08:55:37.250 回答