有一个需求:
n_book 是所有参与限时免费的数据,free_days字段是免费天数,前端要显示具体的每个人截止时间,截止时间是从这个人开始阅读这本书开始算,如果没有阅读过,就按当前服务器时间加上天数然后转换成截止时间。
当一个人阅读了这本书,数据则会写入到n_free_days里,字段如下:
id,add_time,end_time,user_id,bid(书id)
之前用not in 试过,联表后把已截止的过滤掉,数据不准确,
网上查了一下,建议都用not exists,效果确实对的,
{}内的代表变量
SELECT b.id,b.free_days,b.img,b.title,b.content,b.state,b.author,t.name FROM `n_book` AS b left join n_type as t on t.id = b.tid WHERE {$w} b.closed = 0 AND b.del_time = 0 AND b.free_days > 0 AND NOT EXISTS (SELECT f.end_time FROM n_free_days AS f WHERE f.user_id = {$uid} AND f.bid = b.id AND f.end_time< {$time} ) order by {$orderby} {$direction} limit {$start},{$endpage}
还没有人抢沙发呢~