SQLite-запрос из нескольких таблиц с использованием SQLiteDatabase

У меня есть две таблицы в моей базе данных, например: Table1: id (PK), data1 и Table2: 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);

Но есть проблема со вторым аргументом - можно использовать String, а не String [] (например, new String[] {"Table1","Table2}). Что делать, чтобы сделать запрос из нескольких таблиц таким образом?

Ответ 1

Попробуйте следующее:

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

Ответ 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 в SQLiteDatabase

Привет