如何使用sqlite3选择多个​​join / group?

时间:2010-08-31 08:24:53

标签: sql sqlite

我有一个带有一个名为orig的表的sqlite3数据库:

CREATE TABLE orig (sdate date, stime integer, orbnum integer);

我想要做的是为每个orbnum选择第一个日期/时间。唯一的问题是,stime将时间视为一个非常笨拙的整数。

假设一个六位数字,前两位数表示小时数,即3./4。显示分钟,最后两位数字显示秒数。所以12345的值是1:23:45,而值123456是12:34:56。

我想我会使用两个嵌套的join / group语句来做这件事,但不知怎的,我无法让它正常工作。这是我到目前为止所得到的:

select s.orbnum, s.sdate, s.stime
from (
    select t.orbnum, t.sdate, t.stime, min(t.sdate) as minsdate
    from (
        select orbnum, sdate, stime, min(stime) as minstime
        from scia group by orbnum, sdate
    ) as t inner join orig as s on s.stime = t.minstime and s.sdate = t.sdate and s.orbnum = t.orbnum
) as d inner join scia as s on s.stime = d.stime and s.sdate = minsdate and s.orbnum = d.orbnum
where s.sdate >= '2002-08-01' limit 0,200;

这是我得到的错误:

Error: no such column: t.orbnum

我确定这只是一些愚蠢的错误,但实际上,我对SQL很新......

非常感谢任何帮助:)

编辑:

在修复了明显的拼写错误之后,查询运行 - 但返回一个空的结果集。然而,该表保存了大约10年的数据,每天大约12个orbnums,每个orbnum大约4-5个不同的时间。所以我猜这个查询的逻辑存在一些错误......

1 个答案:

答案 0 :(得分:0)

在您的上一次加入中,您有d,这是您的双重嵌套选择的结果,并且您加入了s。从那里,t不可见。这就是为什么你得到“没有这样的列:t.orbnum”的错误。也许你的意思是s.orbnum = d.orbnum