2017-04-13 6 views
0

私はPythonでsqlite3を使用しています。現在の時刻から最も近い時間を選択して教室をリストしたいと思います。これは[タイムテーブル]データベースです。現在の時刻に基づいて新しい列を追加します。

 [ timetable ] 
lecture_room start_time 
--------------------- 
A211   13:00 
A211   14:00 
B107   13:00 

現在の時刻が11:34の場合、予想される結果は次のとおりです。現在時刻が13時34あるとき、私は照会する場合は、以下のように(私は一度しか照会する1つの教室をしたいと思います。)

lecture_room next_time 
--------------------- 
A211   13:00 
B107   13:00 

、期待される結果があります。

lecture_room next_time 
--------------------- 
A211   14:00 
B107   <null> 

これは私がコード化された私のSQLクエリであるが、このSQLクエリは、エラー([1] [SQLITE_ERROR] SQL error or missing database (no such column: L)

SELECT lecture_room as L, 
    (SELECT MIN(start_time) 
    FROM timetable 
    WHERE 
    time("now", "localtime") <= time(start_time) 
    AND 
     L = lecture_room 
) 
FROM timetable; 
+0

"AND L = lecture_room"は同じ意味で意味がありません。 – Michal

答えて

1

は各部屋1つだけのエントリを取得することができ、それはそうでない場合、サブクエリで(DISTINCTを使用します両方の列に適用されます)。

correlated subqueryはほぼ正しいです。

SELECT lecture_room, 
     (SELECT min(start_time) 
     FROM timetable AS t2 
     WHERE t2.lecture_room = t1.lecture_room 
      AND t2.start_time >= time('now', 'localtime') 
     ) AS next_time 
FROM (SELECT DISTINCT lecture_room 
     FROM timetable) AS t1; 
+0

本当に、本当に、本当にあなたは非常にmucyに感謝..魅力のように動作します....:D良い一日を!! – youngminz

関連する問題