0

因此,我有一个现有的 Mysql 查询,该查询非常激烈,类似于:

SELECT CURRENT.*, PROGRAMS.NAME 
FROM CURRENT 
LEFT JOIN PROGRAMS ON CURRENT.PID = PROGRAMS.ID 
ORDER BY PID ASC

现在,我想使用这个查询来做其他事情,因为我已经在访问我的数据库了。我有第三个名为“TIMEWINDOWS”的表,我将如何使用此查询根据它是否在 Start_Time 和 End_Time 之间以及查询中已经存在的所有其他内容返回一组 tinyint(0 或 1)?

非常感谢您的帮助。

TimeWindows 表包含以下内容:

ID               int(11) PK
PID              int(11)   <-- Can join on this from any of the other tables.
ALL_DAY          tinyint(1)
START_DATE       date
END_DATE         date
EARLIEST   time
LATEST     time
NOTICE       int(11)
LATEST  time
MAX int(11)
MIN int(11)
PROBABLE_START   time
PROBABLE_END     time

我想检查它是否在开始和结束日期之间,如果是则返回一个布尔值,但我似乎找不到这样做的方法,有人可以帮忙吗?

4

2 回答 2

1
SELECT CURRENT.*, PROGRAMS.NAME, 
  CASE WHEN t.ID IS NULL THEN 0 ELSE 1 END AS BetweenStartEnd
FROM CURRENT 
  LEFT JOIN PROGRAMS ON CURRENT.PID = PROGRAMS.ID 
  LEFT JOIN TIMEWINDOWS t ON (t.PID = CURRENT.PID 
    AND DATE_FORMAT(NOW(), '%Y-%m-%d') > START_DATE 
    AND DATE_FORMAT(NOW(), '%Y-%m-%d') < END_DATE
  )
ORDER BY PID ASC
于 2012-08-16T19:22:39.807 回答
0

我认为您缺少一些信息来为您提供代码示例,但请查看此页面,它可能会有所帮助:

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

于 2012-08-16T19:21:33.130 回答