开启“列表不重复公司信息”显示条数不对的问题
后台开启了“列表不重复公司信息”后,前台供应列表显示数量均不对,后来发现时sql错误include/tag.func.php
103行[*]
[*] $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']);
[*]
[*]复制代码在include/db_mysql.class.php
63行[*]
[*] function count($table, $condition = '', $expires = 0) {
[*] global $DT_TIME;
[*] $sql = 'SELECT COUNT(*) as amount FROM '.$table;
[*] if($condition) $sql .= ' WHERE '.$condition;
[*]
[*]复制代码如果开启“列表不重复公司信息”,此处的$condition=$condition.$group。
也就是说,SELECT COUNT(*) as amount FROM $table where *** group by username
但是这样的话,amount就是分组统计结果,如下图:
这样列表显示的就不是1240条结果,而是36条,同样的问题在别的地方也存在,都是COUNT(*)和group by 联合使用导致的。
请官方研究一下,给出一个合理的解决方案。谢谢!
而且搜索时不会全部显示出来
http://bbs.destoon.com/static/image/smiley/default/lol.gif
http://bbs.destoon.com/static/image/smiley/default/lol.gif
之前我们通过修改sql语句来解决了该问题,但是发现group by在大数据量的情况下,非常影响效率。
因此我们单独创建了一个sell_list表,单独用来显示前台供应列表信息的,开启公司模式,就调用sell_list表,开启所有信息模式,就调用sell表
关于sell_list表的数据更新,该数据,每个公司只存储最新的供应信息。每次会员操作后台操作,都调用该会员最新时间的信息同步更新到sell_list表即可。。。。。。
页:
[1]