1

我有一个运行良好的数据驱动横幅系统。

它跑了两张桌子

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_datestartbf_dateexpire

我想要实现的是拉入所有banner_frames.bf_ID列出的banner_frameset.bp_frames内容并忽略或获取横幅框架行,具体取决于是否设置了开始日期和到期日期中的一个或两个,同时仍检索其中一个/或两个的所有其他行start 或 expiry 设置为 NULL

执行此查询的最有效方法是什么,可以修改上述查询还是需要在我的 do/while 循环之前将其作为单独的 if 语句运行?

我希望这是有道理的。

非常感谢

4

1 回答 1

0

添加一个 where 子句,包括开始日期和结束日期作为变量,但将开始日期和结束日期初始化为最小/最大 mysql 支持您使用的任何日期类型。默认情况下,查询仍会正常运行,因为默认日期将包含所有日期。根据需要更改开始/结束日期变量。

于 2013-10-03T13:09:44.803 回答