У меня есть две таблицы: одна для хранения задачи и одна для оценки задачи:
create table task(
_id integer primary key autoincrement,
task text not null);
create table eval (
_id integer primary key autoincrement,
taskid integer,
eval integer);
Некоторые данные:
INSERT INTO task VALUES (1,"A small job");
INSERT INTO task VALUES (2,"A easy job");
INSERT INTO eval VALUES (1,1,1);
INSERT INTO eval VALUES (2,1,2);
INSERT INTO eval VALUES (3,2,1);
INSERT INTO eval VALUES (4,2,2);
Затем представление, объединяющее две таблицы:
CREATE VIEW status AS
SELECT eval._id AS _id,
eval.taskid AS taskid,
eval.eval AS eval,
task.task
FROM task JOIN eval
ON task._id = eval.taskid;
Браузер баз данных SQLite не поддерживает представления. Какой хороший браузер базы данных для разработки под Android на linux?
Во-вторых, рассмотрите этот запрос: выберите наивысшую оценку для каждой задачи
SELECT s.task, s.eval
FROM status AS s
JOIN (
SELECT task, MAX(eval) AS maxeval
FROM status
GROUP BY task
) AS pm ON s.task = pm.task AND s.eval = pm.maxeval;
В результате:
s.task s.eval
A easy job 2
A small job 2
Как реализовать этот запрос в приложении для Android? Я попытался упаковать его в метод Cursor android.database.sqlite.SQLiteDatabase.query
и его братьев и сестер без особой удачи.
Есть ли способ просто передать SQL-запрос в виде строки в базу данных и получить набор результатов обратно?