我有以下 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?以及如何在访问中实现子查询?