【发布时间】:2013-07-03 00:49:39
【问题描述】:
我不断收到有关此特定语句的语法错误。
SELECT tbl1.ProjectID, tbl1.EntryDate AS StartDate, tbl2.EntryDate AS EndDate,
(tbl3.ChecklistDayMax - tbl3.ChecklistDayMin + 1) AS DaysAllotted,
(SELECT ProjectPriority FROM project_master WHERE ProjectID = tbl1.ProjectID) AS Priority,
tbl3.MilestoneName,
IIF(Priority = 1, tbl3.BonusDaysFH,
IIF(Priority = 2, tbl3.BonusDaysFM,
IIF(Priority = 3, tbl3.BonusDaysFL))) AS BonusDaysAllotted
FROM (((checklist_entries AS tbl1
INNER JOIN checklist_entries AS tbl2 ON tbl1.ProjectID = tbl2.ProjectID)
INNER JOIN milestone_def AS tbl3 ON [@milestoneID] = milestone_def.MilestoneDefID)
INNER JOIN project_active_status AS tbl4 ON tbl1.ProjectID = project_active_status.ProjectID)
WHERE tbl1.ChecklistDay = tbl3.ChecklistDayMin
AND tbl2.ChecklistDay = tbl3.ChecklistDayMax
AND tbl4.ProjectIsOpen = FALSE;
错误提示 连接操作中的语法错误,然后在第二次 INNER JOIN 之后突出显示里程碑_def。有趣的是,如果我切换这条线......
INNER JOIN milestone_def AS tbl3 ON [@milestoneID] = milestone_def.MilestoneDefID)
用这条线...
INNER JOIN milestone_def AS tbl3 ON [@milestoneID] = tbl3.MilestoneDefID)
我收到错误Join Expression Not Supported,然后它突出显示...
[@milestoneID] = tbl3.MilestoneDefID)
但是如你所见,在第一次加入...
INNER JOIN checklist_entries AS tbl2 ON tbl1.ProjectID = tbl2.ProjectID
我将其命名为 tbl2,然后使用 tbl2.ProjectID,表达式就可以正常工作。最终,无论我如何命名这些东西,我都需要让它发挥作用。
[@milestoneID] 是传递给查询的参数以匹配milestone_def.MilestoneDefID
【问题讨论】:
-
问题标题“太大声”。
-
[@milestoneID]是什么,它来自表吗?它来自什么表?尝试在该列之前放置正确的表别名,然后将tbl3.MilestoneDefID与连接中的另一列一起使用。 -
是传入查询的参数。
-
几天前我在必须存储在第三个表中的 2 个表的简单总和中遇到了类似的错误。经过长时间的搜索,我了解到访问不支持动态子查询。我找到的唯一解决方案(我同意它不是最佳的,甚至不是有效的)是创建中间查询来执行我需要的操作并将结果存储在新表中。一旦我拥有了我需要的所有中间表,我就会在它们之间进行连接。为了使流程更高效,我创建了一个宏,它按顺序调用不同的查询,并调用一个查询来删除临时表中的数据
-
@user1066133
milestone_def是否真的加入了查询中的任何其他表?