请帮我简化这个复杂的查询语句,因为当我运行代码时,它总是会以"查询过于复杂为止#34;错误
SELECT tblTimeReport.DBIDTimeReport, tblTimeReport.DBIDHumanResource
, tblHumanResource.FullName, tblHumanResource.Title, tblTimeReport.DBIDProject
, tblProject.ProjectID, tblProject.ProjectName, tblTimeReport.DBIDActivity
, tblActivity.ActivityID, tblActivity.ActivityName, tblTimeReport.DateTR AS TRDate
, tblTimeReport.StartTime, tblTimeReport.Duration, tblTimeReport.HourlyRate
, Sum([Duration]*[HourlyRate]) AS Cost, tblTimeReport.Comments, tblTimeReport.Deleted
, tblTimeReport.InputBy, tblHumanResourceInput.[FullName] AS InputByFullName
, tblTimeReport.InputDate
FROM (((tblTimeReport
LEFT JOIN tblHumanResource
ON tblTimeReport.DBIDHumanResource = tblHumanResource.DBIDHumanResource)
LEFT JOIN tblHumanResource AS tblHumanResourceInput
ON tblTimeReport.InputBy = tblHumanResourceInput.DBIDHumanResource)
LEFT JOIN tblProject
ON tblTimeReport.DBIDProject = tblProject.DBIDProject)
LEFT JOIN tblActivity ON tblTimeReport.DBIDActivity = tblActivity.DBIDActivity
%WhereCondition%
GROUP BY tblTimeReport.DBIDTimeReport, tblTimeReport.DBIDHumanResource
, tblHumanResource.FullName, tblHumanResource.Title, tblTimeReport.DBIDProject
, tblProject.ProjectID, tblProject.ProjectName, tblTimeReport.DBIDActivity
, tblActivity.ActivityID, tblActivity.ActivityName, tblTimeReport.DateTR
, tblTimeReport.StartTime, tblTimeReport.Duration, tblTimeReport.HourlyRate
, tblTimeReport.Comments, tblTimeReport.Deleted, tblTimeReport.InputBy
, tblHumanResourceInput.FullName, tblTimeReport.InputDate
提前致谢
答案 0 :(得分:0)
如果这是针对报告的,正如列的名称所暗示的那样,您将体验到这一点:
报告为报告的每个部分创建临时查询, 包括报告标题,页眉,组标题,详细信息 部分,组页脚,页脚和报表页脚。全部 每个报告的临时查询被合并为一个分段 虚拟表(SVT)。最终输出必须在64K内编译 分段限制。
http://support.microsoft.com/kb/103429
因此,即使您的查询是在限制内编译的,它的大小也会乘以部分的数量。本文暗示较新版本的Access增加了动态限制,这可能会有所帮助。
您可以尝试通过聚合为组创建视图,并省略所有名称列,并仅包含关键ID。然后对视图使用连接以引入名称。我不确定这是否会有所帮助,因为我不知道只要Access编译查询,视图的内容是否会被拉入。