Table1
ist virtuelle Tabelle mit fts4
und TABLE2
ist normal table
.SQLite Android Join Operation auf FTS4
Query1 (WORKS)
SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
Abfrage 2 (FUNKTIONIERT NICHT)
SELECT * FROM TABLE2 LEFT OUTER JOIN TABLE1 ON TABLE1.id=TABLE2.id WHERE TABLE1 MATCH 'sometext' LIMIT %d,%d
Fehler von Query2
android.database.sqlite. SQLiteEx nehmung: unable Funktion MATCH in dem gewünschten Kontext (Code 1)
Daraus scheint es, wie FTS Tabl verwenden muß zuerst sein auf LEFT OUTER JOIN. Warum das passiert? Join passiert zuerst, bevor die WHERE-Klausel angewendet wird. Wenn es also nicht für einen Fehlertyp der Tabelle funktioniert, ging ich davon aus, dass es auch mit Abfrage1 nicht funktionieren würde. Bitte erklären Sie das bitte. Was passiert intern? Auch jeder Link zur Referenzseite würde es begrüßen, wenn Sie dies erklären würden.
Warum sind Sie TABLE2 auf TABLE2 beitreten wollen? MATCH dient auch zum Vergleichen einer Spalte, die nicht mit einer Tabelle übereinstimmt. – BladeCoder
Es war ein Tippfehler. Ich habe es bearbeitet. Es tut uns leid. Auch als sqlite doc Tabelle kann für die linke Seite angegeben werden. In diesem Fall wird versucht, aus allen Spalten zu suchen. – varuog