Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带IN()的Android SQLite查询_Java_Android_Sqlite_Android Sqlite - Fatal编程技术网

Java 带IN()的Android SQLite查询

Java 带IN()的Android SQLite查询,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我有以下型号 类别(id、名称、是否处于活动状态) 地点(id、名称、类别、id等) 根据用户偏好,类别将为0或1。基于此首选项,我想查询其categories.is_active=1的所有位置 我认为有两种方法 第一种方法 查询并获取_active=1的所有类别 从上面检索到的类别ID集合中获取所有位置的列表 第二种方法 使用JOIN编写RawQuery并设置条件 优化速度的最佳方法是什么 我试过什么 // Get Active Categories public Cursor getActi

我有以下型号

类别(id、名称、是否处于活动状态) 地点(id、名称、类别、id等)

根据用户偏好,类别将为
0或1
。基于此首选项,我想查询其
categories.is_active=1
的所有位置

我认为有两种方法

第一种方法

  • 查询并获取_active=1的所有类别
  • 从上面检索到的类别ID集合中获取所有位置的列表
  • 第二种方法

    使用JOIN编写RawQuery并设置条件

    优化速度的最佳方法是什么

    我试过什么

    // Get Active Categories
    public Cursor getActiveCategories() {
        return db.query(TABLE_CATEGORIES, new String[] { COLUMN_ID,
                COLUMN_NAME, COLUMN_SLUG, COLUMN_ACTIVE }, COLUMN_ACTIVE + "="
                + "'1'", null, null, null, COLUMN_NAME, null);
    }
    
    
    // Get Places
    public Cursor getPlaces() {
        return db.query(TABLE_PLACES, new String[] { COLUMN_ID, COLUMN_NAME },
                " type IN ('1','2')", null, null, null, null);
    }
    

    在上面的代码中,如何在('1','2')中动态插入类型
    ,以便我可以从第一个方法的结果填充该类型?

    单个rawQuery几乎总是比两个单独的查询快。因为您在rawQuery中没有任何参数,所以它将非常简单,类似于

    SELECT places.* 
    FROM places 
    JOIN categories
      ON places.category_id = categories.id
    WHERE categories.is_active = 1
    

    谢谢。如果我还想添加表places中的所有列。我该怎么做?