Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 关于四格图片的出现几率

[复制链接]
白乐天 发表于 2007-6-4 22:30:55 | 显示全部楼层 |阅读模式
我下过一个四格,首页的图片代码是这样写的。
        $orderby = $orderby != 'rand' ? 'attach.'.$orderby : 'rand()';
        $fids = $searchfid ? 'AND '."t.fid IN ($searchfid)" : '';
        $data = array();
        $query = $db->query("SELECT attach.aid, attach.attachment, t.tid, t.fid, t.subject FROM {$tablepre}attachments attach LEFT JOIN {$tablepre}threads t ON t.displayorder>=0 AND t.tid=attach.tid WHERE attach.readperm='0' AND displayorder>='0' AND filetype='image/pjpeg' $fids GROUP BY attach.tid ORDER BY $orderby DESC LIMIT $searchnums");


按理说这样写排序应该是随机的,我论坛有1000张以上的图片,但是我发现出现几率很大的图片总是那几张,而大部分图片一次也没出现过。不知道这是为什么。希望有了解的朋友能帮忙解释一下,谢谢~~~
习明 发表于 2007-6-4 23:12:10 | 显示全部楼层
呵呵 lz真是很细心啊
那你有没有发现这些可以调用到的图片都是每个主题里的第一张符合要求的图片呢?
如果你也发现了这个现象 还不能理解为什么只有一部分图片可以调用到么?

评分

1

查看全部评分

回复

使用道具 举报

 楼主| 白乐天 发表于 2007-6-4 23:16:19 | 显示全部楼层
原来是这样,谢谢楼上释疑!
回复

使用道具 举报

习明 发表于 2007-6-4 23:20:53 | 显示全部楼层
呵呵 客气 lz确实很仔细啊 那么多人似乎都没发现过这个问题
原因我说明一下 查询数据库是先分组后排序的 也就是先group by 然后order by
而group by在有索引的情况下 会按主键从小到大做检索 换个说法就是 当group by 的内容重复时 只获取最小者 而order by相当于将group by之后的内容进行排序 所以 即便是随机 也是在那些首图里随机 其他图片都没机会加入


[ 本帖最后由 习明 于 2007-6-4 23:44 编辑 ]
回复

使用道具 举报

 楼主| 白乐天 发表于 2007-6-4 23:27:19 | 显示全部楼层
恩,明白了,去掉group by 就可以得到全部图片的显示了,不过同一主题会出现多次。我想想怎么改进一下。
回复

使用道具 举报

习明 发表于 2007-6-4 23:51:05 | 显示全部楼层

回复 #5 白乐天 的帖子

呵呵 加油吧 我暂时没想到什么即节省资源又能达到效果的方法
回复

使用道具 举报

梁兄 发表于 2007-6-21 10:28:11 | 显示全部楼层
求:首页四格之附件图片,不要随机的,要求最新发帖的。
回复

使用道具 举报

lyp003 发表于 2007-9-8 14:27:24 | 显示全部楼层
想出来了吗??LZ
回复

使用道具 举报

520xpm 发表于 2007-12-18 21:06:15 | 显示全部楼层
是啊LZ,想出来后和我们分享好吗?
http://mlgb.net/index.php
你看看,那图片总是那几张.
回复

使用道具 举报

黑骐王 发表于 2008-3-4 10:35:39 | 显示全部楼层
求:首页四格之附件图片,不要随机的,要求最新发帖的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 10:18 , Processed in 0.047700 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表