【问题标题】:Java - Inner Join with 3 TableJava - 与 3 个表的内部联接
【发布时间】:2014-01-18 04:05:21
【问题描述】:

我正在使用 Java(netbeans sw) 做一些项目并链接到 Microsoft Access。

当我需要从 Microsoft Access 将 3 个表内部连接在一起时,就会出现问题,

我没有问题将两个表内部连接在一起

rsUpdate = 

stmtUpdate.executeQuery("SELECT * FROM A_User Inner Join A_PC ON A_USER.SN = A_PC.SN");

我能够得到结果。但不是 3 个表的内连接

rsUpdate = 

stmtUpdate.executeQuery

("SELECT * FROM A_User Inner Join A_CPU ON A_USER.SN = A_CPU.SN , Inner Join A_Software ON A_CPU.SN = A_Software.SN")

对于上面的 SQL,我有 3 个“A”表分别用于 USER | CPU | Software|

USER PK is SN | CPU FK is SN | Software PK is SN | 

我得到的错误java.sql.SQLException:Characters found after end SQL statement

谢谢

【问题讨论】:

  • 两个INNER JOIN 语句之间不需要逗号“,”。 SELECT * FROM A_User Inner Join A_CPU ON A_USER.SN = A_CPU.SN Inner Join A_Software ON A_CPU.SN = A_Software.SN
  • 我试过不加逗号,但在查询表达式中提示语法错误
  • @RafaEl 你建议我使用 3 个具有相同主键的表?

标签: java sql ms-access-2007 inner-join


【解决方案1】:

第一次加入后不能有逗号

rsUpdate = 

stmtUpdate.executeQuery

("SELECT * FROM A_User Inner Join A_CPU ON A_USER.SN = A_CPU.SN  Inner Join A_Software ON A_CPU.SN = A_Software.SN")

【讨论】:

  • 我试过 b4 这段代码,但不工作。 "查询表达式中的语法错误(缺少运算符)"
【解决方案2】:

对于Ms Access,当你JOIN超过表时,语法是不同的。应该是这样的:

SELECT * 
FROM   ((a_user 
         INNER JOIN a_cpu 
                 ON a_user.sn = a_cpu.sn) 
        INNER JOIN a_software 
                ON a_cpu.sn = a_software.sn) 

【讨论】:

  • 所以你的意思是 (SELECT * FROM (A_USER Inner Join A_CPU on A_User.SN = A_CPU.SN) Inner Join A_Software ON A_CPU.SN = A_Software.SN) ?
  • 那是你的错字 Inner INNER join 吗?
  • @FookShen - 抱歉看到我的编辑。连接多个表时,Ms Access 有不同的语法。这应该可以正常工作。请尝试一下。
  • 如果我使用Innner INNER JOIN,它会在JOIN Operation中提示语法错误。
  • @FookShen 太好了,确实是错字了,抱歉,删除它。
【解决方案3】:
rsUpdate = 

stmtUpdate.executeQuery

("SELECT * FROM A_User
Inner Join A_CPU ON A_USER.SN = A_CPU.SN
Inner Join A_Software ON A_CPU.SN = A_Software.SN");

这里不需要','...试试上面的代码

【讨论】:

  • 我试过 b4 这段代码,但不工作。 "查询表达式中的语法错误(缺少运算符)"
【解决方案4】:

问题解决

例如-

表 A |用户名(PK)|地址|

表 B |身份证 |电话 |用户名(FK)|

表 C |序列号 |品牌 |型号 |用户名(FK)

rs = st.executeQuery

("SELECT * FROM (A Inner Join B on A.Username = B.Username) Inner Join C on A.Username = C.Username");

如果有人通过使用 JAVA 和链接访问来寻找内部连接 ​​3 个表 使用上面的参考。

确保在运行java程序之前必须在Access中链接表关系,否则会弹出“ERROR IN ROW”

感谢所有帮助我的人:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 2013-10-22
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多