为了账号安全,请及时绑定邮箱和手机立即绑定

多个INNER JOIN SQL ACCESS

多个INNER JOIN SQL ACCESS

胡说叔叔 2019-09-02 17:13:32
查询表达式中的语法错误(缺少运算符)'tbl_employee.emp_id = tbl_netpay.emp_id INNER JOIN tbl_gross ON tbl_employee.emp_id = tbl_gross.emp_ID INNER JOIN tbl_tax ON tbl_employee.emp_id - tbl_tax.emp_ID'。SELECT tbl_employee.emp_ID,tbl_employee.emp_name,tbl_gross.BasicSalary,tbl_gross.totalOT,tbl_netpay.totalGross,tbl_tax.totalLate,tbl_tax.allowance,tbl_tax.SSS,tbl_tax.PhilHealth,tbl_tax.GSIS,tbl_tax.HDMF,tbl_netpay.totalDeduc,tbl_netpay.emp_ti,tbl_netpay.emp_wt,tbl_netpay.emp_npFROM  tbl_employeeINNER JOIN tbl_netpay ON tbl_employee.emp_id = tbl_netpay.emp_idINNER JOIN tbl_gross ON tbl_employee.emp_id = tbl_gross.emp_IDINNER JOIN tbl_tax ON tbl_employee.emp_id = tbl_tax.emp_ID;我总是得到上面的错误。
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

FROM对于包含多个连接的查询,Access需要在子句中使用括号。试试这种方式......


FROM

    ((tbl_employee

    INNER JOIN tbl_netpay

    ON tbl_employee.emp_id = tbl_netpay.emp_id)

    INNER JOIN tbl_gross

    ON tbl_employee.emp_id = tbl_gross.emp_ID)

    INNER JOIN tbl_tax

    ON tbl_employee.emp_id = tbl_tax.emp_ID;

如果可能,请使用Access查询设计器来设置联接。设计人员将根据需要添加括号以保持数据库引擎满意。


查看完整回答
反对 回复 2019-09-02
?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

感谢HansUp的回答,它非常有用,而且很有效!


我发现在Access中有三种模式,你的是最好的,因为它适用于所有情况。


INNER JOIN,你的变种。我将其称为“ 封闭式模式 ”。可以将两个以上的表连接到同一个表,只有这种模式具有良好的性能。


SELECT C_Name, cr.P_FirstName+" "+cr.P_SurName AS ClassRepresentativ, cr2.P_FirstName+" "+cr2.P_SurName AS ClassRepresentativ2nd

FROM

     ((class

       INNER JOIN person AS cr 

       ON class.C_P_ClassRep=cr.P_Nr

     )

     INNER JOIN person AS cr2

     ON class.C_P_ClassRep2nd=cr2.P_Nr

  )

;


INNER JOIN“ 链式设置模式 ”


SELECT C_Name, cr.P_FirstName+" "+cr.P_SurName AS ClassRepresentativ, cr2.P_FirstName+" "+cr2.P_SurName AS ClassRepresentativ2nd

FROM person AS cr

INNER JOIN ( class 

   INNER JOIN ( person AS cr2

   ) ON class.C_P_ClassRep2nd=cr2.P_Nr

) ON class.C_P_ClassRep=cr.P_Nr

;

与WHERE交叉加入


SELECT C_Name, cr.P_FirstName+" "+cr.P_SurName AS ClassRepresentativ, cr2.P_FirstName+" "+cr2.P_SurName AS ClassRepresentativ2nd

FROM class, person AS cr, person AS cr2

WHERE class.C_P_ClassRep=cr.P_Nr AND class.C_P_ClassRep2nd=cr2.P_Nr

;


查看完整回答
反对 回复 2019-09-02
?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

经过多年解决这个问题,创建单独的查询,我找到了答案。括号?,哪个没有意义,我的意思是前两个连接都在括号中,而不是最后一个,为什么?无论如何,这让我很开心,我现在可以在Access中做到这一点。我还没有回去重写所有这些查询或VBA,不。(不能使用查询设计来挽救我的生命,总是写SQL而不是,这似乎是我的问题)

查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 746 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信