Table1
は仮想テーブルで、fts4
とTABLE2
はnormal table
です。FTS4のSQLite Android結合操作
Query1を(WORKS)
SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
クエリ2(動作しません)
SELECT * FROM TABLE2 LEFT OUTER JOIN TABLE1 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
エラーandroid.database.sqlite
QUERY2から。 SQLiteEx ception:要求されたコンテキストで関数MATCH を使用することができません(コード1)
このことから、FTSのTABL JOINをLEFT OUTERに最初にする必要があるように思えます。なぜこれが起こっているのですか? WHERE句を適用する前に結合が先に行われます。テーブル型の不一致のために動作していなかった場合、私はそれがquery1でも動作しないと想定していました。誰でもこれを説明してください。内部的に何が起こっていますか?また、参照サイトへのリンクはこれを説明していただければ幸いです。
は、なぜあなたはTABLE2にTABLE2に参加しようとしていますか?また、MATCHは、表と一致しない列を照合するためのものです。 – BladeCoder
それはタイプミスでした。私はそれを編集した。ごめんなさい。また、sqliteごとにdocテーブルを左側に指定することもできます。その場合、すべての列から一致を試みます。 – varuog