SQLite DB からのクエリに Java java.sql.* を使用しています。sqlString を次のように記述しているという問題が見つかりました。
SELECT n.Name as Name,
c.Value as Value0,
d.Value as Value1
FROM (Table1 c inner join Table2 n on c.NameID = n.ID),
Table3 d
WHERE c.RunID = 1
and d.RunID = 2
and c.NameID = d.NameID
このステートメントstmt.executeQuery(sqlQuery)
は、次の例外をスローします。
java.sql.SQLException: no such column: n.Name
at org.sqlite.DB.throwex(DB.java:288)
at org.sqlite.NativeDB.prepare(Native Method)
at org.sqlite.DB.prepare(DB.java:114)
at org.sqlite.Stmt.executeQuery(Stmt.java:89).............
Name
は既に Table2 テーブルの一部です。同じステートメントが SQLite コマンド プロンプトから正常に機能しています。しかし、開き括弧を削除してJavaから実行しようとすると、問題はありません。なぜこれが起こるのか考えていますか?