跨从其他表获得的多个范围的SQLite查询

跨从其他表获得的多个范围的SQLite查询,sql,sqlite,android-sqlite,Sql,Sqlite,Android Sqlite,我需要关于编写sqlite3查询的帮助。编辑-有一圈到多圈的数据,一圈的数据由开始时间和结束时间定义 --laps table-- _id session_id lap lap_time start_time finish_time <other columns> --data table-- _id session_id time rpm <other columns> 我想获得每圈的圈数、圈数时间、最小rpm、平均GRPM和最大rpm,即data.time>lap

我需要关于编写sqlite3查询的帮助。编辑-有一圈到多圈的数据,一圈的数据由开始时间和结束时间定义

--laps table--
_id
session_id
lap
lap_time
start_time
finish_time
<other columns>

--data table--
_id
session_id
time
rpm
<other columns>
我想获得每圈的圈数、圈数时间、最小rpm、平均GRPM和最大rpm,即data.time>laps.start\u time&data.time 我已经可以通过查询圈数、删除结果集和查询每个圈数的数据来完成这项工作,但我希望通过一个查询来完成。我不知道如何写的加入和条件,所以任何帮助是感谢

编辑-低效的解决方案

String query = "SELECT l.lap_num, l.lap_time, " +
            "(SELECT min(d."+columnName+") FROM logged_data d WHERE d.time > l.start_time AND d.time < l.finish_time AND d.session_id = l.session_id), " +
            "(SELECT avg(d."+columnName+") FROM logged_data d WHERE d.time > l.start_time AND d.time < l.finish_time AND d.session_id = l.session_id), " +
            "(SELECT max(d."+columnName+") FROM logged_data d WHERE d.time > l.start_time AND d.time < l.finish_time AND d.session_id = l.session_id) " +
            "FROM laps l WHERE l.session_id = " + session_id + ";";

除非任何人都可以重写它,否则我将添加此作为答案,这样它就不必每圈执行3次查询。

如果我正确理解了您的问题,您可以将表连接在一起,并使用group by和多个聚合:

select l.lap, l.lap_time, min(d.rpm), avg(d.rpm), max(d.rpm)
from laps l
    join data d on l.session_id = d.session_id
group by l.lap, l.lap_time

选择和连接是正确的,但每圈的数据应按从开始时间到结束时间的时间范围分组。如果我能方便地显示数据表,它会更清晰。我应该提到的是,这是一个一对多的关系,一圈,很多数据。