我有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对我没有任何意义。
它必须与LIMIT相关,因为如果我只使用经典方式的单个表,我的计数器总是等于10(当然,除非它是最后一页)。
这里有什么问题?
谢谢!
答案 0 :(得分:5)
限制应该包含所需的行数和行数。所以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
);