假设我要调用在下载模型中内容的 本周下载次数排序,而且是只要显示在最近一个月之内发布的,那前提我们一定要了解:
下载模型对应的数据表是p8_article_content_101 文章标题对应的数据表是p8_article 控制发布时间的数据字段是p8_article 里的 posttime 而通过本周下载次数排序的数据字段是p8_article_content_101 里的 week_hits
然后就可以得出结论SQL:
SELECT R.*,A.* FROM p8_article A LEFT JOIN p8_article_content_101 R ON A.aid=R.aid //连接2个数据表,确保aid一致 WHERE A.yz = 1 //显示已通过验证 AND A.posttime>UNIX_TIMESTAMP()-86400*30 //控制就在这个月之内发布 AND A.mid= 101 //对应的模型是下载模型 ORDER BY R.week_hits DESC //按照本周下载次数排序 LIMIT 0,10 //提取前10条
其实这里说的重点是对时间方面的控制:UNIX_TIMESTAMP()
以后大家记住如果要控制就显示当天的数据,那对应的那个时间字段就要大于UNIX_TIMESTAMP()-86400
要控制就显示本周的数据,那对应的那个时间字段就要大于UNIX_TIMESTAMP()-86400*7
要控制就显示本月的数据,那对应的那个时间字段就要大于UNIX_TIMESTAMP()-86400*30
---------------------------------------------------------------------------------------------------
我们再做个简单示范:
假设我要调用在本月发布的最热文章,而不是全部时间,那前提我们一定要了解:
文章标题对应的数据表是p8_article 控制发布时间的数据字段是p8_article 里的 posttime 控制浏览次数的数据字段是p8_article 里的 hits 而通过文章来排序的数据字段是p8_article 里的 list
然后就可以得出结论SQL:
SELECT * FROM p8_article A WHERE A.yz = 1 //显示已通过验证 AND A.posttime>UNIX_TIMESTAMP()-86400*30 //控制就在这个月之内发布 AND A.mid= 0 //对应的模型是文章模型 ORDER BY A.list DESC //按照文章排序 LIMIT 0,10 //提取前10条
最后我想或许也很多人想问,如果要控制显示指定栏目下的内容怎么办?那就是多加个 fid IN (栏目id)
在()里输入你指定栏目的id即可,如 fid IN (31,32,33) 这样,那这里我们再综合上以上那个示范:
假设我要调用在本月发布在 栏目31 和 栏目32 和 栏目33 下的最热文章,而不是全部时间,那前提我们一定要了解:
文章标题对应的数据表是p8_article 控制发布时间的数据字段是p8_article 里的 posttime 控制浏览次数的数据字段是p8_article 里的 hits 控制栏目的数据字段是p8_article 里的 fid 而通过文章来排序的数据字段是p8_article 里的 list
然后就可以得出结论SQL:
SELECT * FROM p8_article A WHERE A.yz = 1 //显示已通过验证 AND A.posttime>UNIX_TIMESTAMP()-86400*30 //控制就在这个月之内发布 AND A.fid IN (31,32,33) //就读取栏目31 和 栏目32 和 栏目33 AND A.mid= 0 //对应的模型是文章模型 ORDER BY A.list DESC //按照文章排序 LIMIT 0,10 //提取前10条
当 然了,最后配合一个简单的模板代码: <div style="line-height:180%;">·<A HREF="bencandy.php?fid=$fid&aid=$aid" target='_blank' style="$fontcolor;$fontweight">$title</a></div> 即可大功告成 |