连接子选择时出现语法错误

时间:2012-10-01 18:02:59

标签: ms-access join db2 ms-access-2007 subquery

我需要4个字段 - >

  1. USERID
  2. LOCATION
  3. REPORT_MGR_USERID(报告管理员用户ID)
  4. 经理位置(实际上并未存储)
  5. 要获得第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 个答案:

答案 0 :(得分:2)

您在第一个JOIN子句中指定了表名employee_table和子选择(SELECT DISTINCT....)。并且没有ON条件,虽然这可能是你想要的?

JOIN中employee_table的规范可能只是一个错字,因为你为subselect提供了一个别名...

编辑灯泡刚刚开始,我明白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

答案 1 :(得分:1)

Access数据库引擎无法将JOIN识别为INNER JOIN的同义词。只要您单独使用JOIN,它就会抛出语法错误。将其更改为INNER JOIN

然而,我怀疑你在纠正之后可能仍有问题。连接表达式的其余部分令人困惑,我不明白它的目的是什么。因此,在解决JOIN问题后,您可能仍会遇到另一种语法错误。