如何使用CodeIgniter中的单个查询从多个表中获取结果?

时间:2015-05-01 09:02:36

标签: php mysql codeigniter pdo

我有一种情况,我需要从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的记录。

在这种情况下,类似行上的某些内容最有用。

3 个答案:

答案 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);