我有3个具有完全相同结构的表,我需要将它们作为一个大表来查询,对这个大表作为一个整体进行排序和限制。当我使用分页时,限制是一个偏移量。
到目前为止,这就是我所拥有的:
$from = (($page_number-1)*10);
$to = ($page_number)*10;
$request = mysql_query("
(SELECT * FROM table_a)
UNION ALL
(SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_c)
ORDER BY title ASC
LIMIT ".$from.",".$to
);
$z=0;
while ($result = mysql_fetch_array($request))
{
....
$z++;
};
$counter = $z;我希望$counter等于10,不管页面是什么,但是:
在第1页,$counter = 10
在第2页,$counter = 20
在第3页,$counter = 23
在第4页,$counter =3
好的,如果它不一定等于最后一页的10,因为我从列表中得到了剩下的东西,但是第2页和第3页得到20和23对我没有任何意义。
它必须与限制相关,因为如果我只以一种经典的方式使用单个表,我的计数器总是等于10 (当然,除非它是最后一页)。
这里怎么了?
谢谢!
发布于 2014-02-04 23:48:51
限制应该有开始和你想要的行数。所以,如果您想要前十行,那么是0, 10,如果您想要下一个10,则是10, 10 (而不是10, 20,它将给您从第10行开始的20行)。
如果仍然存在问题,请尝试将选择和联合放在它们自己的()集合中。我不确定操作的顺序,可能您的限制只适用于最后一个表。
$request = mysql_query("
(
(SELECT * FROM table_a)
UNION ALL
(SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_c)
)
ORDER BY title ASC
LIMIT ".$from.",10
);https://stackoverflow.com/questions/21565898
复制相似问题