0

ですから、私は既存のMysqlクエリを持っていますが、これは現状のままで非常に強力で、次のようになります。

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

今、私はすでにデータベースにアクセスしているので、このクエリを使用して何か他のことをしたいと思います。「TIMEWINDOWS」という3番目のテーブルがありますが、このクエリを使用して、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 に答える