私はかなりうまく動作するデータ駆動型バナー システムを持っています。
それは2つのテーブルから離れています
banner_frames これには、すべてのバナー フレームの個々の行が含まれ、画像、テキスト、およびフレーム レイアウト情報が含まれます。
banner_frameset これには、カンマ区切りの値としてクエリに取り込む banner_frames 行のグループ化情報が含まれます。
$bannerpageid
ページに設定されている場合、このクエリを実行するphp変数があります。
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_datestart
。bf_dateexpire
私が達成したいのは、banner_frames.bf_ID
リストされているすべてbanner_frameset.bp_frames
を取得し、開始日と有効期限のいずれかまたは両方が設定されているかどうかに応じて、バナー フレーム行を省略または取得することです。 start または expiry が NULL に設定されている
このクエリを実行する最も効率的な方法は何ですか。上記のクエリを変更できますか、または do/while ループの前に別の if ステートメントとして実行する必要がありますか?
これが理にかなっていることを願っています。
どうもありがとう