我的第一個問題,所以赦免一些不良形式,如果存在。
我目前有三個表(table1,table2,table3),所有這些表都有一個複合主鍵(model-number,serial-number)。其意圖在於將各方之間的序列號相關的數據拆分,其中一些數據比其他數據更有價值,這取決於誰在查看它。組合主鍵共享一對一關係,t1中的鍵與t2中的鍵相關,t2中的鍵與t3中的鍵相關。
我想寫一個查詢,從序列號的所有三個表中提取數據。我在印象之下做到這一點的最佳方式是使用INNER JOIN。該代碼我有多遠......
SELECT
t1.[model-number],
t1.[serial-number],
t1.[track],
t1.[data], --placeholder for data columns
t2.[data], --placeholder for data columns
t3.[data] --placeholder for data columns
FROM [table1] t1
LEFT JOIN [table2] t2
ON t2.[model-number] = t1.[model-number] AND t2.[serial-number] = t1.[serial-number]
LEFT JOIN [table3] t3
ON t3.[model-number] = t2.[model-number] AND t3.[serial-number] = t2.[serial-number]
WHERE t1.[track] = TRUE
ORDER BY t1.[model-number], t1.[serial-number] DESC;
然而,當我運行查詢,MS訪問給我的錯誤:
Syntax error (missing operator) in query expression "".
我試過到目前爲止:
- T1的順序相反。[模型數] = T2。[模型號]等...
- 添加/圍繞T1/T2/T3別名卸下方括號
- 完全刪除WHERE語句
- 將「AS」放在表別名標註的前面(即, LEFT JOIN [table1] AS t1)
- 減少所有數據,以便每個表中只有一個字段被引用(如果我在原始嘗試中調出的30列中的某處出現明顯的語法錯誤)
另外,在我解除錯誤之後,文本光標回到「t2。[」,在第一個LEFT JOIN的後半部分。
所有這一切說,我找不到語法錯誤。我錯過了明顯的東西嗎?
在此先感謝!這個論壇真的幫助我建立這個數據庫。
AC
每下面的評論,我刪除了第二LEFT JOIN,因此代碼閱讀是這樣的:
SELECT
t1.[model-number],
t1.[serial-number],
t1.[track],
t1.[data], --placeholder for data columns
t2.[data], --placeholder for data columns
FROM [table1] t1
LEFT JOIN [table2] t2
ON t2.[model-number] = t1.[model-number] AND t2.[serial-number] = t1.[serial-number]
WHERE t1.[track] = TRUE
ORDER BY t1.[model-number], t1.[serial-number] DESC;
這導致查詢來運行,所以有事情發生的兩個左聯接。我添加了第二LEFT JOIN回來....
SELECT
t1.[model-number],
t1.[serial-number],
t1.[track],
t1.[data], --placeholder for data columns
t2.[data], --placeholder for data columns
t3.[data]
FROM [table1] t1
LEFT JOIN [table2] t2
ON t2.[model-number] = t1.[model-number] AND t2.[serial-number] = t1.[serial-number]
LEFT JOIN [table3] t3
ON t3.[model-number] = t2.[model-number] AND t3.[serial-number] = t2.[serial-number]
WHERE t1.[track] = TRUE
ORDER BY t1.[model-number], t1.[serial-number] DESC;
....用SELECT語句從表一列,它給了我這個錯誤。在連續的JOIN子句之間是否有我缺少的語法?
我想你需要一個'FROM'子句以及你要返回的字段之間的逗號。除非這只是你正在運行的一個片段... – Forty3
在原來的文章中,我意外地輸入了「GROUP BY」而不是「ORDER BY」 - 我在代碼示例中修復了這個問題。我的錯。 – andrewec
也是我的錯!我在我的實際代碼中有一個FROM子句和逗號 - 我將編輯帖子以反映它。 – andrewec