【问题标题】:SQLite query from multiple tables using SQLiteDatabase [duplicate]使用 SQLiteDatabase 从多个表中查询 SQLite [重复]
【发布时间】:2012-06-14 08:40:28
【问题描述】:

我的数据库中有 2 个表,例如:Table1: id (PK), data1Table2: id (PK), id_table1 (FK), data2。我怎样才能进行这样的查询:

SELECT * FROM Table1, Table2 WHERE Table1.id = Table2.id_table1 
GROUP BY Table1.data1

我正在使用SQLiteDatabase 及其query() 方法。

Cursor mCursor = db.query(true, new String[] {"Table1","Table2"}, 
new String[] {"Table1.id","data1", "Table2.id", "id_table1", "data2"},
"Table1.id=Table2.id_table1", null, "Table1.data1", null,null,null);

但是第二个 arg 有一个问题 - 只能使用 String,而不是 String[](如 new String[] {"Table1","Table2})。我应该怎么做才能以这种方式从多个表中进行查询?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    试试这个:

    Cursor mCursor = db.rawQuery("SELECT * FROM Table1, Table2 " +
                                 "WHERE Table1.id = Table2.id_table1 " +
                                 "GROUP BY Table1.data1", null);
    

    【讨论】:

    • @Graham 如何在此传递 id
    【解决方案2】:

    所以当你需要JOIN 表时,你必须使用rawQuery 而不是query。 所以你的陈述

    String SELECT_QUERY = SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id GROUP BY t1.data1;
    

    我建议您使用JOIN,因为它比您的方法更快、更安全。那么你的rawQuery 方法可以如下所示:

    cursor = db.rawQuery(SELECT_QUERY, null);
    

    看过来 rawQuery in SQLiteDatabase

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-03
      • 2015-12-06
      • 2013-10-29
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多