Android Sqlite子查询未返回所有预期结果

Android Sqlite子查询未返回所有预期结果,android,sql,sqlite,android-studio,Android,Sql,Sqlite,Android Studio,我正在开发一个从本地sqlite数据库检索数据的学习应用程序。该数据库有两个表 存储物品类别的类别表: 存储物品本身的物品表: 现在我实现了搜索功能。我希望结果要么是在其文章值中包含搜索短语的文章,要么是在其父类别值中包含搜索短语的文章。因此,我使用此查询来执行此操作: 从项目中选择*,其中项目值为“%search\u phrase%”或父项目id=从类别中选择类别id,其中类别值为“%search\u phrase%” 它对于articles部分很好,但对于subquery部分,它只返回一个类

我正在开发一个从本地sqlite数据库检索数据的学习应用程序。该数据库有两个表

存储物品类别的类别表: 存储物品本身的物品表: 现在我实现了搜索功能。我希望结果要么是在其文章值中包含搜索短语的文章,要么是在其父类别值中包含搜索短语的文章。因此,我使用此查询来执行此操作:

从项目中选择*,其中项目值为“%search\u phrase%”或父项目id=从类别中选择类别id,其中类别值为“%search\u phrase%” 它对于articles部分很好,但对于subquery部分,它只返回一个类别的文章。即使有更多的合格类别。

左连接是否满足您的要求

SELECT a.*
FROM article a LEFT JOIN
     category c
     ON c.category = a.article_parent AND
        c.category_value LIKE '%search_phrase%'
WHERE a.article_value LIKE '%search_phrase%' OR 
      c.category IS NOT NULL;

您可以通过以下方式执行此操作:

SELECT a.* FROM article a 
WHERE a.article_value LIKE '%search_phrase%' 
OR EXISTS (
  SELECT 1 FROM category c
  WHERE c.category_id = a.parent_id
  AND c.category_value LIKE '%search_phrase%'
)

请参阅。

您能否分享一个搜索短语,该短语给出的结果不正确?
SELECT a.*
FROM article a LEFT JOIN
     category c
     ON c.category = a.article_parent AND
        c.category_value LIKE '%search_phrase%'
WHERE a.article_value LIKE '%search_phrase%' OR 
      c.category IS NOT NULL;
SELECT a.* FROM article a 
WHERE a.article_value LIKE '%search_phrase%' 
OR EXISTS (
  SELECT 1 FROM category c
  WHERE c.category_id = a.parent_id
  AND c.category_value LIKE '%search_phrase%'
)