-1

我需要为网页生成不同的广告,而无需重复。

假设我有 6 个广告区域和 100 个广告。我需要用banner.idand生成 6 行zone.id,每次都是唯一的。

表格:

  • 横幅广告 (id, ad_location)

  • 区域 (id, zone_code)

  • banner_to_zones (banner_id, zone_id)

如果需要,它可以是 PHP 和 SQL 的组合

4

1 回答 1

0

这是一种方法。对于每个banner_id随机选择一个可能的区域(从数据中)。然后从选择的随机区域中,随机选择一个banner_id. 此时,您拥有一组不同的区域和横幅。然后,您可以获得其中的六个:

select thezone as zone_id,
       substring_index(group_concat(banner_id order by RAND()), ',', 1) as banner_id
from (select banner_id, substring_index(group_concat(zone_id order by RAND()), ',', 1) as thezone
      from banner_to_zones b2z
      group by banner_id
     ) b
order by rand()
limit 6

在某些情况下,这不起作用。但是假设你有足够的区域和横幅,那么它应该返回六个在横幅和区域上都是不同的。

于 2013-06-18T13:47:11.760 回答