Mysql 使用的SELECT语句在codeigniter中具有不同的列数

Mysql 使用的SELECT语句在codeigniter中具有不同的列数,mysql,codeigniter,Mysql,Codeigniter,错误号码:1222 使用的SELECT语句具有不同的列数 这是控制器 <?php class Autocomplete extends CI_Controller{ function __construct() { parent::__construct(); $this->load->model('datacomplete'); } public function

错误号码:1222
使用的SELECT语句具有不同的列数

这是控制器

    <?php
    class Autocomplete extends CI_Controller{
        function __construct() {
            parent::__construct();
            $this->load->model('datacomplete');
        }

        public function index(){
            $this->load->view('view_demo');
        }
        public function GetCountryName(){
            $keyword=$this->input->post('keyword');
            $data=$this->datacomplete->GetRow($keyword); 

            echo json_encode($data);
        }

    }
    ?>

这是一个模型

        <?php
    class Datacomplete extends CI_Model{

        public function GetRow($keyword) {        
           $this->db->select('collg_name,city,state,country as type');
           $this->db->from('tbl_college');
           $this->db->like("collg_name",$keyword);
           $this->db->or_like('city',$keyword,'after');
           $this->db->or_like('state',$keyword,'after');
           $this->db->or_like('country',$keyword,'after');
           $query1 = $this->db->get_compiled_select();
           $this->db->select('course_offrd_name,category_name,subcategory_name');
           $this->db->from('tbl_course_offered');
           $this->db->like("course_offrd_name",$keyword);
           $this->db->or_like('category_name',$keyword,'after');
           $this->db->or_like('subcategory_name',$keyword,'after');
           $query2 = $this->db->get_compiled_select();
           $result = $this->db->query($query1." UNION ".$query2);
           return $result->result();
        }
    }

您必须在
选择
语句中使用相同的列号,如下所示

首先
选择
使用4列:

$this->db->select('collg_name,city,state,country as type');


second select you use 3 columns : 


$this->db->select('course_offrd_name,category_name,subcategory_name');


class Datacomplete extends CI_Model{

    public function GetRow($keyword) {        
       $this->db->select('collg_name,city,state,country as type');
       $this->db->from('tbl_college');
       $this->db->like("collg_name",$keyword);
       $this->db->or_like('city',$keyword,'after');
       $this->db->or_like('state',$keyword,'after');
       $this->db->or_like('country',$keyword,'after');
       $query1 = $this->db->get_compiled_select();
       $this->db->select('course_offrd_name,category_name,subcategory_name, null as type');
       $this->db->from('tbl_course_offered');
       $this->db->like("course_offrd_name",$keyword);
       $this->db->or_like('category_name',$keyword,'after');
       $this->db->or_like('subcategory_name',$keyword,'after');
       $query2 = $this->db->get_compiled_select();
       $result = $this->db->query($query1." UNION ".$query2);
       return $result->result();
    }
}

中,$result=$this->db->query($query1.“UNION”。$query2);'您正在组合2个表结果,但在第一个表中您正在选择
4
列&在第二个表中您正在选择3列

当您使用
UNION
进行组合时,它将生成记录&这里两个表列不同,列计数也不同。要使用UNION,必须选择相同的列计数&如果可能,则只选择相同的列

在上述情况下,bcz发生错误:

                     + collg_name + city + state + type +
---------------------+------------+------+-------+------+
1st table record     + A          + b    + c     + d    +
---------------------+------------+------+-------+------+
2nd table record     + x          + y    + z     + -    +
第二个表没有最后一列值

在以下条件下执行联合:

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
结果:

        + City +
1st tbl | city1|
1st tbl | city2|
2st tbl | city3|

在控制台中,我收到此错误,加载资源失败:服务器响应状态为500(内部服务器错误)autocomplete/GetCountryName:1在union all select中,列数相同,第一个选择中有4列,第二个选择中有3列select@M.Hemant在uniuon all中选择相同的列数?不understood@M.Hemant选择列的数量是有限制的……我必须做些什么才能使它正常工作?你用相同数量的列尝试过吗?两个select必须有3列
        + City +
1st tbl | city1|
1st tbl | city2|
2st tbl | city3|