質問:
Apache Derby を使用して 3 つのテーブルを単純に結合するには、どの構文を使用する必要がありますか?
私が試したこと:
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) ',' での構文エラーですが、この構文は 2 つのテーブルでしか機能しません
sql.append(" FROM MatterDataset JOIN DocumentClassification, PrivilegeLog " ) ;
2) 上記のように指示し、「,」で SYNTAX ERROR
sql.append(" FROM MatterDataset, DocumentClassification, PrivilegeLog " ) ; //
3) 「AND」での構文エラー
sql.append(" FROM MatterDataset JOIN DocumentClassification AND PrivilegeLog " ) ; //
他に何を試すべきかわかりません (SQL 全般に関する同様の問題について Web 検索を実行した後)。Apache Derby で簡単にこれを行う方法はありますか?
環境設定:
Java 7
アパッチ ダービー 10.9.1。