destoon采集论坛

 找回密码
 立即注册
查看: 204|回复: 2

开启“列表不重复公司信息”显示条数不对的问题

[复制链接]

12

主题

10

回帖

64

积分

注册会员

Rank: 2

积分
64
发表于 2011-2-14 09:00:16 | 显示全部楼层 |阅读模式
后台开启了“列表不重复公司信息”后,前台供应列表显示数量均不对,后来发现时sql错误

include/tag.func.php
103行[ol]
  •         $num = 0;
  •         $group = $group ? " GROUP BY $group" : '';
  •         $order = $order ? " ORDER BY $order" : '';
  •         $condition = stripslashes($condition);
  •         $condition = str_replace('##', '%', $condition);
  •         if($showpage) {
  •                 $num = $db->count($table, $condition.$group, $tag_expires ? $tag_expires : $CFG['db_expires']);
  • [/ol]复制代码在include/db_mysql.class.php
    63行[ol]
  •         function count($table, $condition = '', $expires = 0) {
  •                 global $DT_TIME;
  •                 $sql = 'SELECT COUNT(*) as amount FROM '.$table;
  •                 if($condition) $sql .= ' WHERE '.$condition;
  • [/ol]复制代码如果开启“列表不重复公司信息”,此处的$condition=$condition.$group。

    也就是说,SELECT COUNT(*) as amount FROM $table where *** group by username

    但是这样的话,amount就是分组统计结果,如下图:

    这样列表显示的就不是1240条结果,而是36条,同样的问题在别的地方也存在,都是COUNT(*)和group by 联合使用导致的。

    请官方研究一下,给出一个合理的解决方案。谢谢!
  • 回复

    使用道具 举报

    19

    主题

    30

    回帖

    135

    积分

    注册会员

    Rank: 2

    积分
    135
    发表于 2011-2-15 16:05:05 | 显示全部楼层

    而且搜索时不会全部显示出来
    回复 支持 反对

    使用道具 举报

    12

    主题

    10

    回帖

    64

    积分

    注册会员

    Rank: 2

    积分
    64
     楼主| 发表于 2011-3-9 11:07:33 | 显示全部楼层





    之前我们通过修改sql语句来解决了该问题,但是发现group by在大数据量的情况下,非常影响效率。
    因此我们单独创建了一个sell_list表,单独用来显示前台供应列表信息的,开启公司模式,就调用sell_list表,开启所有信息模式,就调用sell表

    关于sell_list表的数据更新,该数据,每个公司只存储最新的供应信息。每次会员操作后台操作,都调用该会员最新时间的信息同步更新到sell_list表即可。。。。。。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    QQ|小黑屋|手机版|Archiver|destoon采集论坛

    GMT+8, 2025-11-23 08:37 , Processed in 0.014198 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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