我想写一个查询,将检索一些列(真是一个惊喜!)。除了简单的查询,特别是在Access中,我感到非常可怕。以下是Access中查询设计器的图像。如何编写此查询以获取我需要的内容?
底部的字段是我期待拉回来的字段。 project_master.ContactDesigner是contacts.ContactID的外键。我想获取ID 2,3和4的MilestoneNames的列表。然后例如说,MilestoneID 2具有Project Initiation的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),因为我并不需要在查询中。
您可以发布此查询的SQL命令的版本?我在Access GUI知识中生疏。 “= 2或3或4”看起来有点嫌疑。 –
已添加SQL ...... –
'INNER JOIN'只在连接的字段不为空时才返回行;否则它不会返回。如果你需要能够返回一行,即使连接字段为空,也可以使用'LEFT JOIN'。不知道这是否是问题,因为我看不到您的数据,但对于没有经验的SQL用户来说这是一个常见的问题,所以我会提及它。 –