gpt4 book ai didi

php - PDO 从多个相同的表中选择

转载 作者:行者123 更新时间:2023-11-29 08:48:58 25 4
gpt4 key购买 nike

我想从多个相同的表(三个甚至更多)中获取数据,它们具有相同的列名称(但行中的数据不同)。

因此,我想通过循环获取所有表,就好像它是一个查询(一个循环),而不是三个。

我不想在获取数组时将列数增加三倍。我希望所有表都使用相同的列名。表的数据将在数组中一个接一个地堆叠,而不是一个接一个地堆叠,从而使数组中的列数增加三倍。但是,一旦它们一个接一个地堆叠起来,“ORDER BY”过滤器就会“混合”这些表:“ORDER BY”将同时作用于所有表(就像只有一个表一样),而不是作用于所有表。单独的表。

我对 1 个表的查询如下所示:

$pdo = "SELECT * FROM " .$table1 ." ORDER BY price LIMIT " 
.$current_page_offset .", " .$items_per_pages;

所以...我想获取三个表,就像我只获取一个表一样。

*还想保持我的限制和“ORDER BY”甚至更多过滤器的工作。我不希望在页面上显示三倍于我想要的项目数量的三重限制...

有办法做到这一点吗?

*编辑:我更改了第三段对“混合”的描述。抱歉(也许)我的英语不好。

最佳答案

您想使用UNION :

UNION is used to combine the result from multiple SELECT statements into a single result set.

因此,如果您的表名称位于名为 $tables 的数组中:

mb_regex_encoding($charset); // character set of database connection
foreach ($tables as $table) {
$table = '`'.mb_ereg_replace('`','``',$table).'`';
$sql[] = "(
SELECT *
FROM $table
ORDER BY price
LIMIT $current_page_offset, $items_per_pages
)";
}
$sql = implode(' UNION ALL ', $sql);

但是,听起来您的架构应该标准化,这样您就不会拥有此类“相同”的表:而是使用一个带有附加列的表来指示每个表的区别。

关于php - PDO 从多个相同的表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com