关于spPager的问题求助。

#1 Luffy。龙

呃。也许是
spPager
的问题。
$sql = "SELECT *
                                FROM qing_member A
                                LEFT JOIN qing_star B on (A.uid  = B.uid)
                                ORDER BY rand()";
                $this->stars = spClass('db_member')->spPager($this->spArgs('page',1),12)->findSql($sql);
                $page = spClass('db_member')->spPager()->getPager();
               


SELECT COUNT(uid) as sp_counter FROM (SELECT * FROM qing_member A LEFT JOIN qing_star B on (A.uid = B.uid) ORDER BY rand()) sp_tmp_table_pager1
执行错误: Duplicate column name 'uid'





2012-03-28 16:15:52

#2 jake

http://www.speedphp.com/database-pager-sql.html


spClass('db_member')->pk = 'A.uid';
$this->stars = spClass('db_member')->spPager($this->spArgs('page',1),12)->findSql($sql);
$page = spClass('db_member')->spPager()->getPager();

2012-03-28 16:58:04

#3 Luffy。龙

三克油:$:$

2012-03-28 17:01:37

#4 fosf

我以前用过一次这样的报错,我就换其它的了,呵呵:loveliness:

2012-03-28 17:03:53

#5 Luffy。龙

:(   加上表明还是一样的错误- -

2012-03-28 17:08:27

#6 Luffy。龙

$sql = "SELECT A.*, B.*
                                FROM qing_member A
                                LEFT JOIN qing_star B on (A.uid  = B.uid)
                                ORDER BY rand()";
               
                spClass('db_member')->pk = 'A.uid';
                $this->stars = spClass('db_member')->spPager($this->spArgs('page',1),12)->findSql($sql);
                $page = spClass('db_member')->spPager()->getPager();

2012-03-28 17:09:03

#7 Luffy。龙

$sql = "SELECT qing_member.uid
                                FROM qing_member
                                LEFT JOIN qing_star  on (qing_member.uid  = qing_star.uid)
                                ORDER BY rand()";
                spClass('db_member')->pk = 'uid';
                $this->stars = spClass('db_member')->spPager($this->spArgs('page',1),12)->findSql($sql);
                $page = spClass('db_member')->spPager()->getPager();
               
这样就对了,在pk里不能加表,因为中间的查询结果的字段不带表。。。

2012-03-28 17:19:40

#8 jake

spClass('db_member')->pk = '*';

2012-03-28 17:19:54

#9 Luffy。龙

jake 发表于 2012-3-28 17:19
spClass('db_member')->pk = '*';
$sql = "SELECT qing_member.*
                                FROM qing_member
                                LEFT JOIN qing_star  on (qing_member.uid  = qing_star.uid)
                                ORDER BY rand()";
                spClass('db_member')->pk = '*';
               
这样是对的


$sql = "SELECT qing_member.*, qing_star.*
                                FROM qing_member
                                LEFT JOIN qing_star  on (qing_member.uid  = qing_star.uid)
                                ORDER BY rand()";
                spClass('db_member')->pk = '*';
               
这样又错了- -

2012-03-28 17:41:36

#10 jake

嗯,估计这个问题解决不了。

spPager + findSql 只能计算比较简单的SQL,复杂的还是要你自己去做分页了。

2012-03-28 18:38:00