2013-07-03 30 views
1

有沒有人有任何想法,爲什麼這不工作?試圖讓3個表的內部連接工作

"SELECT TT.SubmitDate AS SD, TT.AssignedEmp as AE, TT.JobNum as JN, 
     TT.BegMile as BM, TT.EndMile as EM, TT.TotMile as TM, TT.TandT as TA, TT.Daily as DA, 
     TI.InTime as IT, TI.OutLunch as OL, TI.InLunch as IL, TI.OutTime as OT, TI.TotalTime as TO, 
     WO.JobName 
FROM TimeTracking TI 
INNER JOIN TransportTable TT 
ON TI.TimeSheetNum = TT.TimeSheetNumber 
INNER JOIN WorkOrderNum WO 
ON TT.JobNum = WO.JobNumber 
WHERE TT.AssignedEmp='$empname' AND TT.SubmitDate >= '$start' AND TT.SubmitDate <='$end' 
ORDER BY TT.SubmitDate"; 

它給了我此錯誤消息:如果我刪除或者兩個連接

SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error 
(missing operator) in query expression 'TI.TimeSheetNum = TT.TimeSheetNumber 
INNER JOIN WorkOrderNum WO ON TT.JobNum = WO.JobNumber'., SQL state 37000 
in SQLExecDirect 

的查詢工作正常,所以我知道這個問題是不是與單獨加入...上午我錯過了簡單的東西?

+0

它顯示簡單的語法錯誤(缺少操作符)。因此,最好仔細看看top.I希望你知道關於內部連接的語法來獲得兩個以上的表數據。 –

+0

當你刪除整個where子句時會發生什麼? 'TimeSheetNum(ber)'和'JobNum(ber)'是什麼類型?關於主題,但以我的觀點來看,最好與列命名一致。如果你使用'Num'或'Number',但是你自己*(和其他人)*一個忙,並選擇一個**,這並不重要。 –

+0

如果我刪除where子句,仍然會出現同樣的問題。 TimeSheetNum(ber)和JobNum(ber)都是整數。是的,我搞砸了列名,是我一直想回去修復的東西。 – Hoser

回答

4

訪問需要在包含多個連接的查詢的FROM子句中使用括號。如果可能,請使用Access查詢設計器設置連接 - 查詢設計器知道在哪裏放置括號以保持數據庫引擎的快樂。

SELECT * 
FROM 
    (TimeTracking TI 
    INNER JOIN TransportTable TT 
    ON TI.TimeSheetNum = TT.TimeSheetNumber) 
    INNER JOIN WorkOrderNum WO 
    ON TT.JobNum = WO.JobNumber 

如果在一個類似的簡單查詢連接的工作,你可以添加你SELECT領域,WHERE條件和ORDER BY

+0

完美。正是我需要的。謝謝! – Hoser

+0

@HansUp - thx。我又學到了新的東西,這一天還很年輕。 –