簡體   English   中英

MS Access 2007 SQL查詢出現問題

[英]Trouble with MS Access 2007 SQL Query

普通的SQL查詢與MS Access 2007查詢是否不同?

我有這個簡單的查詢,但是在MS Access查詢(SQL視圖)中不起作用。 這有什么問題?

SELECT StudentSubject.*, Subject.*,Professor.*, Student.*, Church.*
FROM 
(

SELECT StudentSubject.*, Subject.*,Professor.* , Student.*
FROM 
 (

 SELECT  StudentSubject.*, Subject.*,Professor.* 
FROM
 StudentSubject 
LEFT JOIN Subject ON StudentSubject.SubjectID=Subject.SubjectID
 INNER JOIN Professor ON Subject.ProfessorID=Professor.ProfessorID

  ) 
  INNER JOIN Student ON StudentSubject.StudentID=Student.StudentID
) 
LEFT JOIN Church ON Student.ChurchID=Church.ChurchID;

我相信如果我使用MySQL / MSSQL,這會起作用(如果我使用別名並直接執行-這是ms access sql設計器的輸出)

我在加入操作時收到語法錯誤。 但是MS Access並未指出哪個連接。

稍有不同,但是我也不認為問題中的查詢也可以在其他DB上使用-子查詢中有對表名的引用,而這些子查詢沒有以匹配的表名作為別名。

試試這個,代替:

SELECT StudentSubject.*, Subject.*,Professor.*, Student.*, Church.*
FROM  StudentSubject 
LEFT JOIN Subject ON StudentSubject.SubjectID=Subject.SubjectID
INNER JOIN Professor ON Subject.ProfessorID=Professor.ProfessorID
INNER JOIN Student ON StudentSubject.StudentID=Student.StudentID
LEFT JOIN Church ON Student.ChurchID=Church.ChurchID;

由於不同的列具有相同的名稱,這仍可能會返回錯誤-如果是這樣,則應僅將每個表中的所需列替換為.* ,並使用適當的列別名。

添加括號就可以了

SELECT Subject.SubjectName,Professor.ProfessorName,Church.ChurchName,Student.StudentName 
FROM  ((((StudentSubject LEFT JOIN Subject 
ON StudentSubject.SubjectID=Subject.SubjectID)
INNER JOIN Professor ON Subject.ProfessorID=Professor.ProfessorID)
INNER JOIN Student ON StudentSubject.StudentID=Student.StudentID)
LEFT JOIN Church ON Student.ChurchID=Church.ChurchID);

普通的SQL查詢與MS Access 2007查詢是否不同?

所謂“普通SQL”,可能是指入門級SQL-92標准SQL(無論您是否知道!)。

總體而言,Access(ACE,Jet等)不符合SQL-92。

具體來說,Access的JOIN語法與SQL-92不兼容。

在SQL-92中,可以將一個或多個JOIN子句括在括號內以顯示優先級。 如果不使用括號,則所有JOIN子句的優先級都相同。

在Access中,每個JOIN子句必須單獨用括號括起來,但是所有JOIN子句的優先級都相同。

換句話說,對Standard語法及其自身語法的訪問限制比標准的:(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM