我正在尝试在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是模糊的,你必须使用()
包装内连接才能使它工作,我已经用其他几个查询做了这个,但我真的很难解决这个问题。
答案 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或具有长表名,则可以显着缩小代码。