MS Access中的多个(左,交叉?)JOIN

时间:2012-05-09 08:47:15

标签: sql ms-access join

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

database diagram

填充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个连接,但已经有了这个我得到了#34; JOIN表达式不受支持"错误。

我们也很感激任何数据库设计建议 - 这是一个我设计的新数据库,我是一个SQL新手。

提前致谢!

更新: 我也在想,也许我应该尝试一个子查询?就像在一个查询中执行CROSS join(of Operation,Employee和Period),然后将UnitOfWork LEFT加入到查询结果中......但是我如何通过多个字段来加入""?如何在访问中实现子查询?

1 个答案:

答案 0 :(得分: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