如何在Codeigniter中合并两个查询

时间:2019-02-14 09:19:44

标签: php mysql codeigniter

我在codeigniter中有2个查询,这些查询用于ajax数据表。在此之前,当我使用单个 查询。在为UNION添加一个查询之后,它对我不起作用。请使用查找我的模型函数 数据表。

Model.php(工作此函数)在_get_online_supplier_reports_datatable()函数中使用单个查询

<?php
public function _get_online_supplier_reports_datatable(){

     $this->db->select('"Amadeus" AS SupplierName,TST_Type,TKT_Type,TKTNumber,TKT_FO_REF,BasePrice,TaxPrice,Commission1,(BasePrice+TaxPrice) AS TotalPrice,"issued" AS tkt_type,createdby,TicketedDate as created_date,CONCAT(a3m.firstname," ",a3m.lastname) AS created_name,a3m.account_id,a3m.locationvalue AS Location_ID,a3m.locationdescription AS Location_Name,a3m.costcentervalue AS CostCenter_ID,a3m.costcenterdescription AS CostCenter_Name');
        $this->db->from($this->traveldb->database.".booking_price bp");
        $this->db->join('a3m_account_details a3m','a3m.account_id=createdby','left');
        $this->db->where('TKTNumber !=', '');


        if(isset($_POST['order'])) // here order processing
        {
            $this->db->order_by($this->column_order_online_supplier_reports_match[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
        } 
        else if(isset($this->order_online_supplier_reports_match))
        {
            $order = $this->order_online_supplier_reports_match;
            $this->db->order_by(key($order), $order[key($order)]);
        }

    }

    public function get_online_supplier_reports_datatable(){
        $this->_get_online_supplier_reports_datatable();
        if($_POST['length'] != -1)
        $this->db->limit($_POST['length'], $_POST['start']);
        $query = $this->db->get();
         return $query->result();
    }
    public function count_filtered_online_supplier_reports_rec(){
        $this->_get_online_supplier_reports_datatable();
        $query = $this->db->get();
        return $query->num_rows();
    } 

    ?>

我在_get_online_supplier_reports_datatable()函数中为“联合”两个查询添加了一个查询。此后它不起作用

<?php
public function _get_online_supplier_reports_datatable(){

        //Query 1 here
        $this->db->select('"Amadeus" AS SupplierName,TST_Type,TKT_Type,TKTNumber,TKT_FO_REF,BasePrice,TaxPrice,Commission1,(BasePrice+TaxPrice) AS TotalPrice,"issued" AS tkt_type,createdby,TicketedDate as created_date,CONCAT(a3m.firstname," ",a3m.lastname) AS created_name,a3m.account_id,a3m.locationvalue AS Location_ID,a3m.locationdescription AS Location_Name,a3m.costcentervalue AS CostCenter_ID,a3m.costcenterdescription AS CostCenter_Name');
        $this->db->from($this->traveldb->database.".booking_price bp");
        $this->db->join('a3m_account_details a3m','a3m.account_id=createdby','left');
        $this->db->where('TKTNumber !=', '');
        $query1 = $this->db->get_compiled_select(); 

        //QUery2 Here
         $this->db->select('"Amadeus" AS SupplierName,"" AS TST_Type,"" AS  TKT_Type,br_tkt AS TKTNumber,"" as TKT_FO_REF,br_fare_paid_B as BasePrice,br_tax_refund_TXT as TaxPrice,br_cancellation_penalty as Commission1,br_fare_total_RFT AS TotalPrice,br_cancel_type AS tkt_type,br_added_by as createdby,br_refund_date as created_date,CONCAT(a3m.firstname," ",a3m.lastname) AS created_name,a3m.account_id,a3m.locationvalue AS Location_ID,a3m.locationdescription AS Location_Name,a3m.costcentervalue AS CostCenter_ID,a3m.costcenterdescription AS CostCenter_Name');
        $this->db->from($this->traveldb->database.".booking_refund bp");
        $this->db->join('a3m_account_details a3m','a3m.account_id=br_added_by','left');
        $this->db->where('br_tkt !=', '');
        $query2 = $this->db->get_compiled_select(); 

    //Union both querys 
     $query=  $this->db->query($query1." UNION ALL".$query2);

        if(isset($_POST['order'])) // here order processing
        {
            $this->db->order_by($this->column_order_online_supplier_reports_match[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
        } 
        else if(isset($this->order_online_supplier_reports_match))
        {
            $order = $this->order_online_supplier_reports_match;
            $this->db->order_by(key($order), $order[key($order)]);
        }

    }

    public function get_online_supplier_reports_datatable(){
        $this->_get_online_supplier_reports_datatable();
        if($_POST['length'] != -1)
        $this->db->limit($_POST['length'], $_POST['start']);
        $query = $this->db->get();
         return $query->result();
    }
    public function count_filtered_online_supplier_reports_rec(){
        $this->_get_online_supplier_reports_datatable();
        $query = $this->db->get();
        return $query->num_rows();
    } 

主要问题是,在使用工会时,将获得数据,但我不想仅获得数据。我只想 合并两个查询。我所需的输出函数_get_online_supplier_reports_datatable()类似于此代码。

public function _get_online_supplier_reports_datatable(){

        //Query 1 here
        $query1= $this->db->select('"Amadeus" AS SupplierName,TST_Type,TKT_Type,TKTNumber,TKT_FO_REF,BasePrice,TaxPrice,Commission1,(BasePrice+TaxPrice) AS TotalPrice,"issued" AS tkt_type,createdby,TicketedDate as created_date,CONCAT(a3m.firstname," ",a3m.lastname) AS created_name,a3m.account_id,a3m.locationvalue AS Location_ID,a3m.locationdescription AS Location_Name,a3m.costcentervalue AS CostCenter_ID,a3m.costcenterdescription AS CostCenter_Name');
        $this->db->from($this->traveldb->database.".booking_price bp");
        $this->db->join('a3m_account_details a3m','a3m.account_id=createdby','left');
        $this->db->where('TKTNumber !=', '');

        //$query1 = $this->db->get_compiled_select(); 

        //QUery2 Here
        $query2=  $this->db->select('"Amadeus" AS SupplierName,"" AS TST_Type,"" AS  TKT_Type,br_tkt AS TKTNumber,"" as TKT_FO_REF,br_fare_paid_B as BasePrice,br_tax_refund_TXT as TaxPrice,br_cancellation_penalty as Commission1,br_fare_total_RFT AS TotalPrice,br_cancel_type AS tkt_type,br_added_by as createdby,br_refund_date as created_date,CONCAT(a3m.firstname," ",a3m.lastname) AS created_name,a3m.account_id,a3m.locationvalue AS Location_ID,a3m.locationdescription AS Location_Name,a3m.costcentervalue AS CostCenter_ID,a3m.costcenterdescription AS CostCenter_Name');
        $this->db->from($this->traveldb->database.".booking_refund bp");
        $this->db->join('a3m_account_details a3m','a3m.account_id=br_added_by','left');
        $this->db->where('br_tkt !=', '');

        //$query2 = $this->db->get_compiled_select(); 

    //Union both querys 
     $query=  $this->db->query($query1." UNION ALL".$query2);

        if(isset($_POST['order'])) // here order processing
        {
            $this->db->order_by($this->column_order_online_supplier_reports_match[$_POST['order']['0']['column']], $_POST['order']['0']['dir']);
        } 
        else if(isset($this->order_online_supplier_reports_match))
        {
            $order = $this->order_online_supplier_reports_match;
            $this->db->order_by(key($order), $order[key($order)]);
        }

    }

0 个答案:

没有答案