2012-10-01 38 views
1

我有4個領域,我需要 - >語法錯誤在加入子選擇

  1. USERID
  2. 位置
  3. REPORT_MGR_USERID(報告管理用戶ID)
  4. 經理的位置(這是不實際存儲)

要獲得第四個,我需要使用SQL來構建它。我可以通過「USERID」和「LOCATION」字段來完成。

這是我的嘗試。我通過一個鏈接的DB2表在Access 2007中運行一個查詢。

SELECT DISTINCT employee_table.LOCATION, employee_table.USERID, employee_table.REPORT_MGR_USERID, manager_location 
FROM employee_table main 
JOIN employee_table (SELECT DISTINCT employee_table.LOCATION FROM employee_table AS sub WHERE sub.USERID = main.REPORT_MGR_USERID) manager_location 

當我運行它,它給我這個錯誤 - >

Syntax error in FROM clause 

,然後突出顯示JOIN關鍵字。

這看起來一切從我已經看了正確....

編輯:

感謝David W,這是未來的參考工作版本 - >

SELECT DISTINCT main.LOCATION, main.USERID, main.REPORT_MGR_USERID, manager_data.LOCATION 
FROM employee_table main 
INNER JOIN employee_table manager_data 
ON main.REPORT_MGR_USERID=manager_data.USERID 

回答

2

您要在第一個JOIN子句中指定表名稱employee_table和子查詢(SELECT DISTINCT....)。沒有條件,儘管這可能是你想要的?

employee_table在JOIN可能只是一個錯字,因爲你已經規定的子查詢的別名規範...

編輯燈泡只是不停地和我理解的OP想要什麼。在這裏,我們去:

SELECT DISTINCT main.LOCATION, main.USERID, main.REPORT_MGR_USERID, manager_data.manager_location 
    FROM employee_table main 
    INNER JOIN employee_table manager_data 
    on main.REPORT_MGR_USERID=manager_data.USERID 
+0

正確。我們沒有'manager_location'字段,但我可以通過使用「manager_id」字段並獲取「location字段」來構建它。這是一個自我加入。 – hacket

+0

我刪除'employee_table',它給了我同樣的問題... – hacket

+0

在查看更多您的查詢,它看起來有點奇特。你說你沒有位置字段,但是你從該表中選擇ADVHRVP_ENT_EMPLOYEE_LIST.LOCATION?看起來這是對不同表格的限定參考? –

1

的Access數據庫引擎無法識別JOININNER JOIN的代名詞。它在任何時候僅僅使用JOIN就會引發語法錯誤。將其更改爲INNER JOIN

但是,我懷疑你可能在糾正之後仍然有問題。連接表達式的其餘部分是令人困惑的,我不明白它打算完成什麼。所以在修復JOIN問題後,您可能仍然會遇到另一個語法錯誤。

+0

這並沒有工作:( – hacket

+0

採取了SQL大衛W建議並替代INNER JOIN JOIN。這就是你所追求的? – HansUp

+0

這似乎工作,但現在提示我輸入每個我的SELECT字段...? – hacket