![](/img/trans.png)
[英]MySQL / PHP Query - check that entered start/end dates don't overlap existing date ranges in Db
[英]mysql query with start and end dates on individual rows
我有一个运行良好的数据驱动横幅系统。
它从两张桌子上跑下来
banner_frames这包含所有横幅框架的单独行,并包含图像,文本和框架布局信息。
banner_frameset这包含分组信息,该行的banner_frames行以逗号分隔的值进入查询。
有一个PHP变量$bannerpageid
,如果在页面上设置了该变量,则会运行此查询。
mysql_select_db($database_banners, $banners);
$query_banner_frameset = "SELECT banner_frameset.*, banner_frames.*
FROM banner_frameset, banner_frames
WHERE banner_frameset.bp_ID = $bannerpageid
AND FIND_IN_SET(banner_frames.bf_ID, banner_frameset.bp_frames)
AND banner_frames.bf_live = 1
ORDER BY FIND_IN_SET(banner_frames.bf_ID, banner_frameset.bp_frames)";
$banner_frameset = mysql_query($query_banner_frameset, $banners) or die(mysql_error());
$row_banner_frameset = mysql_fetch_assoc($banner_frameset);
$totalRows_banner_frameset = mysql_num_rows($banner_frameset);
我想将查询修改为每个帧行包括一个可选的开始日期和/或到期日期,以仅在当前日期/时间小于或大于任何横幅帧行中设置的条目时显示受影响的帧。
开始日期和到期日期的banner_frame bf_dateexpire
: bf_datestart
和bf_dateexpire
我想实现的是在所有拉banner_frames.bf_ID
中列出banner_frameset.bp_frames
,要么省略或得到一个横幅上,如果一方或双方的开始日期和到期日期被设置,同时还检索所有其他行架排依赖其中起始或到期时间都设置为NULL的情况
执行此查询的最有效方法是什么,可以修改上述查询,还是需要在do / while循环之前将其作为单独的if语句运行?
我希望这是有道理的。
非常感谢
添加一个包含开始日期和结束日期作为变量的where子句,但是将开始日期和结束日期初始化为mysql支持的最小/最大mysql (无论您使用哪种日期类型)。 默认情况下,查询仍将正常运行,因为默认日期将包含所有内容。 根据需要更改开始/结束日期变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.