我正在将我的数据库从SQL Server转换为MS Access。
此查询在SQL Server中正常工作,但在MS-Access中存在语法错误。
这个SQL语句出了什么问题?
select *
from Students
left join (select Lessons.StudentID, COUNT(*) as LessonsCount
from Lessons
group by Lessons.StudentID) as c on c.StudentID = Students.ID
left join (select Tests.StudentID, count(*) as TestsCount
from Tests
group by Tests.StudentID) as dd on dd.StudentID = c.StudentID
答案 0 :(得分:3)
Access SQL需要具有多个连接的括号。处理该问题的自动防故障方法是在查询设计器中设置联接,并让Access添加它想要的括号。
可能看起来像这样:
select *
from (Students
left join [select Lessons.StudentID, COUNT(*) as LessonsCount
from Lessons
group by Lessons.StudentID]. as c on c.StudentID = Students.ID)
left join [select Tests.StudentID, count(*) as TestsCount
from Tests
group by Tests.StudentID]. as dd on dd.StudentID = c.StudentID
查询设计器的副作用是它倾向于从此表单转换子查询
(SELECT some_field FROM some_table) AS sub
到此......
[SELECT some_field FROM some_table]. AS sub