我有一种情况,我需要从7个不同的表中获取数据,以便执行特定的处理。
我需要7个简单的SELECT
所有陈述,没什么特别的。但是为了最小化数据库命中,我非常希望将这些查询捆绑到1或2个查询中。
喜欢:
select * from table1; select * from table2; select * from table3;.
并将从我的代码中调用此查询。是否有可能在PHP的.net的数据集的类似行中获得结果。我正在寻找核心PHP或CodeIgniter的解决方案。我正在使用PDO进行数据库连接。
PS:这些表有不同的模式,没有共同点。所以任何带有join或union的解决方案都行不通。
$results = $this->db-query("select * from tb1; select * from tb2");
现在$result[0]
应该包含来自tb1的所有记录,而$results[1]
应该包含来自tb2的记录。
在这种情况下,类似行上的某些内容最有用。
答案 0 :(得分:0)
看看InnerJoin。这就是你一次进行多项选择的方法 - 假设你有一个共同的数据点
答案 1 :(得分:0)
您需要的是UNION
$this->db->query('SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2');
UNION ALL 这是UNION关键字和可选的ALL关键字。 UNION表示UNION之前的SELECT语句的结果将与UNION之后的SELECT语句的结果组合。
使用ALL关键字时,不会从union生成的组合集中删除重复的行。这可以显着提高查询的性能,因为Access不必检查重复行的结果。如果满足以下任一条件,则应使用ALL关键字:
您确定选择查询不会产生任何查询 重复的行。
如果您的结果有重复的行,则无关紧要。
您希望看到重复的行。
<强> EDITED 强>
在您的版本以及我从您的问题中得到的内容之后,这可能会有所帮助。您需要循环查询以获取results
数组作为
$tablename = array('name1','name2','name3','name4','name5','name6','name7');
$results = array();
foreach($tablename as $key => $value){
$results[$key] = $this->db->query("select * from ".$value."")->result_array();
}
答案 2 :(得分:0)
codigniter中的多重选择查询
$this->db->select('t1.*, t2.*');
$this->db->from('table1 AS t1, table2 AS t2');
$query = $this->db->get();
$row = $query->result_array();
print_r($row);