我正在尝试编写一个可以检索某些列的查询(多么令人惊讶!)。除了简单的查询之外,我对其他任何东西都非常糟糕,特别是在Access中。下面是Access中查询设计器的图像。
底部的字段是我想要撤回的字段。 project_master.ContactDesigner是contacts.ContactID的外键。我想得到ID为2,3和4的MilestoneNames列表。然后比如说,MilestoneID 2有一个项目启动的MilestoneName,我希望有一个存在开始和结束日期的项目的记录在该MilestoneID的project_milestone_dates中,列出与外键project_master.ContactDesigner绑定的每条记录的联系人姓名。例如,这只需要获取ProjectPriority为2的记录。
不确定这是否清楚,因为我很难解释我在这里寻找什么,但我缺少标准,甚至可能需要添加到查询中的一些ID?我迷路了。当前设计在列中没有返回任何内容。
SELECT milestone_def.milestonename,
contacts.firstname,
priority_def.priorityname,
project_milestone_dates.startdate,
project_milestone_dates.enddate,
milestone_def.milestonedefid
FROM (project_milestone_dates
INNER JOIN (priority_def
INNER JOIN (contacts
INNER JOIN project_master
ON ( contacts.contactid =
project_master.contactdesigner ))
ON priority_def.prioritydefid =
project_master.projectpriority)
ON project_milestone_dates.projectid =
priority_def.prioritydefid)
INNER JOIN milestone_def
ON project_milestone_dates.milestoneid =
milestone_def.milestonedefid
WHERE ( ( ( project_master.projectpriority ) = [@priority] )
AND ( ( milestone_def.milestonedefid ) = 5
OR ( milestone_def.milestonedefid ) = 6
OR ( milestone_def.milestonedefid ) = 7 ) );
将其更改为5或6或7,因为它应该是它。
编辑*
我删除了 AND(contacts.ContactID = project_master.ContactOwner)行,因为我在查询中不需要它。
答案 0 :(得分:1)
project_milestone_dates.ProjectID = priority_def.PriorityDefID
这看起来像是一个糟糕的联接。
不应该吗?:
project_milestone_dates.ProjectID = priority_def.projectid
移动project_milestone_date表,使其直接连接到project_master,而不是priority_def