Microsoft Access 2007 - 查询多个表会产生错误

时间:2012-01-07 20:40:53

标签: ms-access join

我正在尝试在MS Access中创建一个查询,该查询最多可查询4个表,以生成一个很好的信息整理 单击视图后,我收到错误:

  

查询表达式中的语法错误(缺少运算符)   sessions.sessionTypeFK = session_type.session_type.id)内部联接人员(sessions.StaffFK = staff.staff_id)内部联接人员(staff.FK_personID = person.personID'

有趣的是,它总是错过最后一个错误的括号?

SELECT sessions.*, session_type.[Session Type],forename,surname
from sessions
inner join session_type on (sessions.SessionTypeFK=session_type.session_type_id)
inner join staff on (sessions.StaffFK=staff.Staff_ID)
inner join person on (staff.FK_PersonID=person.PersonID)

我知道MS Access是模糊的,你必须使用()包装内连接才能使它工作,我已经用其他几个查询做了这个,但我真的很难解决这个问题。

2 个答案:

答案 0 :(得分:0)

你的意思是:

SELECT sessions.*, session_type.[Session Type],forename,surname
from ((sessions
inner join session_type on sessions.SessionTypeFK=session_type.session_type_id)
inner join staff on sessions.StaffFK=staff.Staff_ID)
inner join person on staff.FK_PersonID=person.PersonID

为什么不使用Access查询设计窗口然后切换到SQL视图来获取示例SQL?

答案 1 :(得分:0)

因为它们都是内部联接,所以您可以使用更简单的格式重写查询,而不使用查询设计器,如下所示:

SELECT S.*, T.[Session Type], P.Forename, P.Surname
FROM Sessions As S, Session_Type As T, Staff As F, Person As P
WHERE T.Session_Type_ID = S.SessionTypeFK
AND F.Staff_ID = S.StaffFK
AND P.PersonID = F.FK_PersonID

只要您不使用外连接,就可以在WHERE子句中链接表,以便于回读。您可能还注意到我已使用别名作为表名,这也可以帮助使SQL更容易理解,如果您正在编写大型SQL或具有长表名,则可以显着缩小代码。