2012-02-15 52 views
0

我爲網站創建了橫幅廣告機制。橫幅點擊標籤,網址等存儲在MySQL數據庫。目前,我只是從所有可用的橫幅中獲得隨機橫幅並將其顯示在網站上。 但是,我怎樣才能實現某種機制,使所有的橫幅均勻顯示,但隨機順序?從MySQL獲取隨機行(Flash橫幅廣告),均勻分配

回答

2

將另一列添加到您的橫幅表格中,該列表將計算橫幅的使用次數。假設您將其稱爲「banner_usages」。

我猜你使用的是選擇獲得隨機的旗幟,由rand()函數排序和限制結果的數量爲1

所以給出的新列,你應該只添加一個新的排序字段,新列,因爲是第一個使用

所以,如果你將排序的結果使用數量的用法上升你會有那些在開始時沒有使用過多。對於使用次數最少的用戶,您將通過rand()命令它們,以便獲得該效果。

所以,你的查詢應該是這樣的:

SELECT * FROM `banners` ORDER BY banner_usages ASC, RAND() LIMIT 1 

還記得之後選擇更新用途的數量。像

UPDATE `banners` SET `banner_usages` = `banner_usages` + 1 WHERE `banner_id` = _THE_ONE_YOU_JUST_GOT_ 

的東西,應該是它

+0

謝謝,工作只是完美的:)! – fjckls 2012-02-15 14:24:14

+0

@fjckls酷,我很高興它幫助 – mishu 2012-02-15 14:24:56

+1

+ 1爲一個簡單的解決方案。如果您想在一段時間後添加其他橫幅:'插入橫幅廣告(banner_usages,...)VALUES((SELECT MIN(banner_usages)FROM banners),...)'以確保新廣告不會贏得所有廣告其他。 – 2014-01-22 00:27:09

0

添加計數器列到您的SQL表來跟蹤有多少次,每次加已被查看並使用

SELECT ad_url FROM ads ORDER BY counter LIMIT 1; 

假設廣告沒有投放給一個用戶以獨佔這似乎是隨機的給用戶,因爲單個添加視圖會影響下一個用戶看到的內容,並保持平均分配。