Как сделать несколько объединений / групп по выбору с помощью sqlite3? - PullRequest
1 голос
/ 31 августа 2010

У меня есть база данных sqlite3 с одной таблицей с именем orig:

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

Что я хочу сделать, это выбрать первую дату / время для каждого orbnum. Единственная проблема заключается в том, что stime считает время очень неловким целым числом.

Предполагая шестизначное число, первые две цифры показывают час, 3./4. показывают минуты, а последние две цифры показывают секунды. Таким образом, значение 12345 равно 1:23:45, а значение 123456 равно 12: 34: 56.

Я подумал, что сделаю это, используя два вложенных оператора соединения / группы, но почему-то я не могу заставить его работать должным образом. Вот что у меня так далеко:

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 ...

Любая помощь очень ценится:)

Edit:

После исправления очевидной опечатки запрос выполняется - но возвращает пустой набор результатов. Тем не менее, таблица содержит ~ 10 лет данных, с примерно 12 орбн в день и примерно 4-5 раз на орбнум. Так что я предполагаю, что в логике запроса есть какая-то ошибка ...

1 Ответ

0 голосов
/ 31 августа 2010

В вашем последнем соединении у вас есть d, что является результатом вашего двойного вложенного выбора, и вы присоединяетесь к s. Оттуда t не видно. Вот почему вы получаете сообщение об ошибке «нет такого столбца: t.orbnum». Может быть, вы имели в виду s.orbnum = d.orbnum?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...