簡體   English   中英

查詢FROM子句中的返回語法錯誤

[英]Query returning syntax error in FROM clause

我有3個不同列的表:

tableA = id(PK) & name columns
tableB = id(PK), A_ID(foreign key to tableA), name, address, etc columns
tableC = id(PK), A_ID(foreign key to tableA), name columns

我正在嘗試使用以下查詢從基於tableA name ='something'的所有表中的某些列中檢索值,但始終返回語法錯誤。

“SELECT tableA.name, tableB.name, tableB.address, tableC.name FROM 
tableA, tableB, tableC JOIN tableB ON tableA.id = tableB.A_ID JOIN tableC 
ON tableA.id = tableC.A_ID WHERE tableA.name = ‘something’”  

如果要使用join語法,則必須從from語句中刪除表

SELECT tableA.name, tableB.name, tableB.address, tableC.name 
FROM tableA
INNER JOIN tableB ON tableA.id = tableB.A_ID 
INNER JOIN tableC ON tableA.id = tableC.A_ID 
WHERE tableA.name = 'something'

我建議你使用別名,代碼可以更具可讀性:

SELECT A.name, B.name, B.address, C.name 
FROM tableA A
INNER JOIN tableB B ON A.id = B.A_ID 
INNER JOIN tableC C ON A.id = C.A_ID 
WHERE A.name = 'something'

Ms Ms要求您指定聯接類型: INNER ; LEFT ; RIGHT Access不能僅將JOIN識別為INNER JOIN的同義詞。

包含多個連接的查詢需要FROM子句中的括號。

我還將您的引號字符更改為簡單的"' 。示例查詢包括類型設置引號。我不知道它們是否存在於實際的SQL中,但我會避免使用它們。

SELECT tableA.name, tableB.name, tableB.address, tableC.name
FROM 
    (tableA
    INNER JOIN tableB
    ON tableA.id = tableB.A_ID)
    INNER JOIN tableC
    ON tableA.id = tableC.A_ID
WHERE tableA.name = 'something'

如果您具有可用的完整版Access,請使用查詢設計器來設置連接。 設計人員知道保持數據庫引擎滿意的語法規則。

否則你可以這樣做:

SELECT tableA.name, tableB.name, tableB.address, tableC.name 
FROM tableA, tableB, tableC 
WHERE tableA.id = tableB.A_ID AND tableA.id = tableC.A_ID 
AND tableA.name = ‘something

Parado的答案是正確的..

此外,您可以通過使用表名的別名來簡化查詢的長度。這也是很好的做法..

從表A中選擇a.name,b.name,b.address a.id = b.A_ID上的連接表B b

暫無
暫無

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

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