検索しましたが、クエリにうまく適合できる解決策を見つけることができませんでした。
広告バナーを保持するデータベースを構築し、スクリプトが回転して各バナーを連続して表示しますが、テーブルを検索してCTR(クリック率)が最も高いバナーを表示するクエリを追加しようとしています。 MINインプレッション(バナーが表示された回数)とMAXクリック(バナーがクリックされた回数)
検索クエリのさまざまな組み合わせを試しましたが、構文が間違っているものもあれば、正しい構文であるように見えるものもありますが、期待どおりの結果が得られません。これが最後に試したクエリです。
$query = "SELECT banner_id,banner_url,banner_alt,banner_size FROM banner_ads WHERE $banner_niche$banner_size banner_enable=1 AND banner_impressions=(SELECT MIN(banner_impressions) FROM banner_ads WHERE banner_clicks=(SELECT MAX(banner_clicks) FROM banner_ads));";
$result = mysql_query($query) or die('Query failed: ' . mysql_error() . "\nQuery: $query");
$row = mysql_fetch_array($result, MYSQL_NUM);
$banner_id = $row[0];
$banner_url = $row[1];
$banner_alt = $row[2];
list($banner_width, $banner_height) = split("x", $row[3]);
フィールドの内容の例は次のとおりです。
banner_id / banners row ID number : 1
banner_url / URL to the banner image : http://somesite.com/banner.jpg
banner_alt / banner alt text : Visit SomeSite.com
banner_size / size of the banner : 468x60
banner_niche / the category of the banner : books
banner_enable / is the banner set to display or not : 1
banner_impressions / number of times banner has been shown : 1000
banner_clicks / number if time banner has been clicked : 50
したがって、クリック数が最も多く、表示回数が最も少ないバナーをテーブルで検索するためのクエリが必要です。
----------------------------------------------
banner_id | banner_impressions | banner_clicks
----------------------------------------------
1 | 1000 | 50
2 | 100 | 80
3 | 2000 | 90
----------------------------------------------
したがって、上記の例では、banner_id2が基準に一致します。(関連性がないため、例の他のフィールドはスキップしました)
よろしくお願いします。私が達成しようとしていることを十分に説明できたと思います。