【问题标题】:Combining results from 2 databases in codeigniter在 codeigniter 中结合来自 2 个数据库的结果
【发布时间】:2013-08-30 12:07:08
【问题描述】:

我正在尝试研究如何使用 codeigniter 将 2 个 mysql 数据库中同一张表的结果组合起来。

两个表的列名相同,但数据库的连接设置不同。

我目前正在尝试这个:

public function getAllNames() {

$sql1 = <<SQL
        SELECT 
          id, name, CONCAT(name, ' (', id, ')') AS name2
        FROM
          db1.table
        ORDER BY name
SQL;

$sql2 = <<SQL
        SELECT 
          id, name, CONCAT(name, ' (', id, ')') AS name2
        FROM
          db2.table
        ORDER BY name
SQL;

$q = $this->db->query($sql1." UNION ".$sql2);

return $q->result();

}

将每个数据库的相同查询存储在 2 个变量中,然后尝试使用 UNION 组合它们。但是,这是行不通的,因为它无法将 db 名称识别为数据库(并且无论如何它都不会有每个 db 的连接设置)。我认为 ORDER BY 也放错了地方。我不确定我应该在哪里为每个查询指定数据库,或者这种方法是否可行。

有什么想法吗?

【问题讨论】:

    标签: mysql codeigniter union multiple-databases


    【解决方案1】:

    实际上,接受的答案不起作用,因为 query 函数返回的不是数组,而是database result object

    正如this question 所见,您需要调用返回对象数组的result 函数(或返回数组数组的result_array) ,并合并这些数组:

    使用结果

    $array_1 = $this->db->get()->result();
    $array_2 = $this->db->get()->result();
    $final_array = array_merge($array_1, $array_2);
    
    foreach ($final_array as $row){
        echo $row->id;
        echo $row->description;
    }
    

    使用 result_array

    $array_1 = $this->db->get()->result_array();
    $array_2 = $this->db->get()->result_array();
    $final_array = array_merge($array_1, $array_2);
    
    foreach ($final_array as $row){
        echo $row['id'];
        echo $row['description'];
    }
    

    【讨论】:

      【解决方案2】:

      试试看

      $DB1 = $this->load->database('db1');
      $DB2 = $this->load->database('db2');
      
      $res1 = $DB1->query($sql1);
      $res2 = $DB2->query($sql2);
      $result = array_merge($res1 , $res2);
      

      【讨论】:

      • 我最终采用了不同的方式,因为我发现每个表所需的列并不完全相同(尽管我被告知它们是!),但这很有效。谢谢你,Gautam3164。
      猜你喜欢
      • 2017-11-16
      • 2012-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      相关资源
      最近更新 更多