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

填充“员工”,“期间”和“操作”表,而“UnitOfWork”表为空白。

基本上,我有些物品是由多个工人(雇员)生产的。每个项目都需要执行多项操作(每个工作人员可以在任意时间多次执行任何一项操作)。所有操作都需要一定的成本,我将需要生成报告,说明每个员工在“本月”赚了多少钱,他是否完成了计划等等。

我想进行一次选择以查看以下内容: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新手。

提前致谢!

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

最佳答案

尝试这种方式:

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

关于sql - MS Access中的多个(左,交叉?)联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10512693/

10-16 12:25