2017-04-13 59 views
0

我在Python中使用sqlite3。我想在列出教室的同时选择距离当前时间最近的时间。这是[时间表]数据库。根据当前时间添加新列

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

如果我查询当前时间是11:34,预期结果如下。 (我想要一个教室只被查询一次。)

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

如果我查询当前时间是13:34,预期结果如下。

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

要获得每个房间只有一个入口,使用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

真的,真的,真的非常感谢你......我的作品像一个魅力....:D祝你有美好的一天! – youngminz