更新しました
最後に、この方法を使用して、フィルター処理された結果を取得しました。
SELECT * FROM statuses WHERE _id NOT IN (
SELECT DISTINCT statuses._id FROM statuses, filtered_sources WHERE statuses.source LIKE '%'||filtered_sources.text||'%'
UNION
SELECT DISTINCT statuses._id FROM statuses WHERE statuses.screen_name IN(SELECT filtered_users.text FROM filtered_users)
UNION
SELECT DISTINCT statuses._id FROM statuses, filtered_keywords WHERE statuses.text LIKE '%'||filtered_keywords.text||'%'
);
結果を直接結合する代わりに、なぜこの方法を使用するのですか?
Androidquery()
ではなくメソッドを使用したいのですが。rawQuery()
@zapiと@sixfeetsix、どうもありがとうございました、あなたの答えは私にこのアイデアを与えてくれます!
ここでテスト用のsqliteデータベースをダウンロードします http://db.tt/ZsEwE9TV
sqliteデータベースには、statuss、filtered_keywords、filtered_sourcesの3つのテーブルが含まれています。
各テーブルの列:
ステータス:
|_id|text|source|
Filtered_keywordsおよびfiltered_sources:
|_id|text|
ここで、とstatuses
の単語を含むクエリ結果をフィルタリングしたいと思います。filtered_keywords
filtered_sources
sqliteで使用できることはわかってLIKE
いますが、関数のように使用することはできませんIN
。
SELECT * FROM statuses WHERE text in (SELECT text FROM filtered_sources);
したがって、最初にすべてのデータをクエリしてからfiltered_sources
、long where句を作成する必要がありますが、これは非常に低速です。filtered_keywords
Cursor
フィルタリングされた結果を取得する簡単な方法はありますか?