问题:
我需要使用什么语法来使用 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 德比 10.9.1。