2013-03-05 139 views
1

試圖讓我的SQL查詢在MS Access中工作,但它不想。我試圖找到一個指南或有關此事,因爲我知道它發生了很多時間,它通常只是添加一些括號,但我還沒有能夠得到這個查詢工作,儘管我所有的嘗試:將SQL查詢轉換爲MS Access SQL

SELECT t1.Name AS lev1, t2.Name as lev2, t3.Name as lev3, t4.Name as lev4 
FROM Folder AS t1 
LEFT JOIN Folder AS t2 ON t2.Parent = t1.ObjId 
LEFT JOIN Folder AS t3 ON t3.Parent = t2.ObjId 
LEFT JOIN Folder AS t4 ON t4.Parent = t3.ObjId 
WHERE t1.ObjId = '123456789'; 
+3

你得到什麼錯誤? – 2013-03-05 15:48:54

+0

通常的Access語法錯誤 - 無操作符,然後它指向第一行的t2.Name。不知道你爲什麼問我這個。正如你可能已經知道的,Access需要很多括號,這就是爲什麼它是一個語法錯誤,但我不知道在哪裏放置括號。我從來沒有真正理解這種差異,這就是爲什麼我要求提供某種關於差異的準則或指示。 – dnLL 2013-03-05 15:50:00

回答

4

MS Access需要每個連接周圍的括號。當你擁有多表連接,你將有幾個:

SELECT t1.Name AS lev1, t2.Name as lev2, t3.Name as lev3, t4.Name as lev4 
FROM ((Folder AS t1 
LEFT JOIN Folder AS t2 ON t2.Parent = t1.ObjId) 
LEFT JOIN Folder AS t3 ON t3.Parent = t2.ObjId) 
LEFT JOIN Folder AS t4 ON t4.Parent = t3.ObjId 
WHERE t1.ObjId = '123456789'; 

格式化它看起來像這樣:

SELECT t1.Name AS lev1, t2.Name as lev2, t3.Name as lev3, t4.Name as lev4 
FROM 
(
    (
     Folder AS t1 
     LEFT JOIN Folder AS t2 ON t2.Parent = t1.ObjId 
    ) 
    LEFT JOIN Folder AS t3 ON t3.Parent = t2.ObjId 
) 
LEFT JOIN Folder AS t4 ON t4.Parent = t3.ObjId 
WHERE t1.ObjId = '123456789'; 
+0

這是行不通的。這總是一樣嗎? FROM子句開頭的所有開括號,然後在每個JOIN/ON語句後關閉一個開括號? – dnLL 2013-03-05 15:57:20

+1

@dnLL是的,這是語法。在每個加入之後將開頭圓括號放在'FROM'處並關閉。 – Taryn 2013-03-05 15:58:18