我的问题在表结构下有进一步的描述。
这是我的广告横幅系统的表格:
标语
id (唯一键)
标题
横幅
最大命中率
maxklik
活动来源
激活,直到
dato
bannerhits (播放次数)
id (唯一键)
ip地址
bannerid (索引)(指banner.id)
dato
bannerklik (点击数)
id (唯一键)
ip地址
bannerid (索引)(指banner.id)
dato
问题
我想要的是执行一个查询,从表' banner‘中选择一个横幅,其中:
(b.usertype = $usertype OR b.usertype = '0')
和
(活动从现在的<=活动到现在的>=
或
maxklik > 'bannerklik‘中的行数,其中bannerklik.bannerid = banner.id
或
banner.id > 'bannerhits‘中的行数,其中bannerhits.bannerid = maxhits )
你能为我创建一个查询吗,因为我真的不知道怎么做:)
发布于 2010-01-13 07:39:09
我认为下面的方法应该是可行的..(假设您在banner表中有一个usertype字段)
SELECT
b.id, b.title, b.bannersrc
FROM
banner b
LEFT OUTER JOIN bannerhits bh ON b.id = bh.bannerid
LEFT OUTER JOIN bannerklik bk ON b.id = bk.bannerid
WHERE
(b.usertype = '0' OR b.usertype = $usertype)
AND
(b.activefrom <= curdate() AND b.activeuntil >= curdate())
GROUP BY
b.id, b.title, b.bannersrc, b.maxklik, b.maxhits
HAVING
(
b.maxklik > count( DISTINCT(bk.id) )
OR
b.maxhits > count( DISTINCT(bh.id) )
)编辑1个
好的,让我们修改一下这里的条件。
您希望同时满足以下条件才能显示广告
我说的对吗?
https://stackoverflow.com/questions/2052988
复制相似问题