java - 如何连接 Apache Derby 数据库中的三个表?

标签 java sql derby

问题:

使用 Apache Derby 连接三个表需要使用什么语法?

我尝试过的:

我正在将 Java 应用程序从 SQLite 转换为 Apache Derby。 在 SQLite 中,以下 SQL 语法可以正常工作。

sql.append("SELECT MatterDataset.id,  ");
//Removed rest of selection items for readability and to focus the inquiry

sql.append(" FROM MatterDataset, DocumentClassification, PrivilegeLog  " ) ; //<--PROBLEM LINE
sql.append("  ON MatterDataset.matterid = DocumentClassification.matterid  " ) ;
sql.append("   AND MatterDataset.matterid = PrivilegeLog.matterid   " ) ;
sql.append("   AND MatterDataset.id = DocumentClassification.documentid   " ) ;
sql.append("   AND MatterDataset.id = PrivilegeLog.documentparentid    " ) ;
sql.append(" WHERE    " ) ;
sql.append("  Matterdataset.matterid = ? " ) ; //Prepared statement
sql.append("  AND Matterdataset.isdeleted = 0  " ) ;

导致转换为 Apache Derby 的问题的行是:

sql.append(" FROM MatterDataset, DocumentClassification, PrivilegeLog  " ) ; 

我已经尝试了几种变体,并且所有变体都引发了 Java Derby 的语法错误(通过 ij 工具)。

1) ',' 处的语法错误,但此语法仅适用于两个表

sql.append(" FROM MatterDataset JOIN DocumentClassification, PrivilegeLog  " ) ; 

2) 直接如上,在“,”处出现语法错误

sql.append(" FROM MatterDataset, DocumentClassification, PrivilegeLog  " ) ; // 

3) "AND"处的语法错误

sql.append(" FROM MatterDataset JOIN DocumentClassification AND PrivilegeLog  " ) ; // 

我不确定还可以尝试什么(在对一般的 SQL 执行类似问题的网络搜索之后)。有没有办法在 Apache Derby 中简单地做到这一点?

环境设置:

Java 7
Apache Derby 10.9.1。

最佳答案

您可以简单地使用 , 连接表格

sql.append("SELECT MatterDataset.id  ");
//Removed rest of selection items for readability and to focus the inquiry

sql.append(" FROM MatterDataset, DocumentClassification, PrivilegeLog  " ) ; //<--NOT A PROBLEM LINE
sql.append(" WHERE    " ) ;
sql.append("   MatterDataset.id = DocumentClassification.matterid  " ) ;
sql.append("   AND MatterDataset.id = PrivilegeLog.matterid   " ) ;
sql.append("   AND DocumentClassification.id = PrivilegeLog.documentparentid    " ) ;
sql.append("   AND Matterdataset.id = ? " ) ; //Prepared statement
sql.append("   AND Matterdataset.isdeleted = 0  " ) ;

Derby 数据库也可以是 optimized for performance .

关于java - 如何连接 Apache Derby 数据库中的三个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15578912/

相关文章:

java - Spring 的属性文件

java - 为什么 JLabel 实例只显示 8 行?

mysql - MYSQL 中的生产查询速度慢,但开发速度慢

MySQL where 子句后的序号

java - 当我将冷漠服务器数据库转换为 Derby 数据库时如何解决这些问题

java - Eclipse 数据库连接驱动程序定义

java - 没有错误,但应用程序打不开

java - 当有模型列表而不仅仅是 Java 中的模型时如何获取类

sql - LEFT JOIN 在 PostgreSQL 中使用链接表

database - 列出 Apache Derby 事件连接