![](/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.