Php 具有多个表的搜索结果,如查询CodeIgniter

Php 具有多个表的搜索结果,如查询CodeIgniter,php,mysql,codeigniter,Php,Mysql,Codeigniter,CodeIgniter/PHP/MYSQL 我有两张这种结构的桌子 国家:id,国家名称(1,印度尼西亚,2,印度) 州:id,国家id,州名(1,1,苏拉威西塞拉坦)(2,1,苏拉威西腾加)(3,1,苏门答腊尤塔拉)(4,2,古吉拉特邦) 我想用多个表进行搜索 例如,如果我输入“si”,那么它将给出如下结果 印度尼西亚-----苏拉威西群岛 印度尼西亚------苏拉威西登加 印度------古吉拉特邦 如何在codeingniter查询中找到此结果: 我正在尝试以下查询: SELECT

CodeIgniter/PHP/MYSQL

我有两张这种结构的桌子

  • 国家:id,国家名称(1,印度尼西亚,2,印度)
  • 州:id,国家id,州名(1,1,苏拉威西塞拉坦)(2,1,苏拉威西腾加)(3,1,苏门答腊尤塔拉)(4,2,古吉拉特邦)
  • 我想用多个表进行搜索

    例如,如果我输入“si”,那么它将给出如下结果


    印度尼西亚-----苏拉威西群岛

    印度尼西亚------苏拉威西登加

    印度------古吉拉特邦


    如何在codeingniter查询中找到此结果: 我正在尝试以下查询:

    SELECT ts.id,ts.state_name,tc.country_name 
    FROM STATE ts 
    LEFT JOIN COUNTRY tc 
    ON tc.id = ts.country_id 
    WHERE ts.state_name LIKE '%si%' || tc.country_name LIKE '%si%'
    
    此查询的我的输出:


    苏拉威西群岛------印度尼西亚

    苏拉威西腾迦------印度尼西亚

    苏门答腊岛------印度尼西亚


    您可以尝试以下代码:

    控制器

    public function search_general_medicine() {
    
            ini_set("memory_limit", "512M");
            $keyword = $this->input->post('keyword');
            $medical_id = $this->input->post('medical_id');
    
            if ($keyword != '' && $medical_id != '') {
                $result_medicine = $this->ws->get_medicine_details($keyword);
                print_r($result_medicine);
        }
    
    型号

    function get_medicine_details($keyword)
        {
    
            $query = "SELECT * FROM (
      SELECT medicine_id, medicine_name,medicine_package,medical_id,'g' FROM tbl_general_medicine
        UNION
      SELECT medicine_id, medicine_name,medicine_package,medical_id,'c' FROM tbl_medicine
      ) AS t
    WHERE  medicine_name LIKE '%" . $keyword . "%' limit 20;";
    
            $result_medicine = $this->db->query($query);
    
    
            if ($result_medicine->num_rows() > 0) {
                return $result_medicine->result_array();
            } else {
                return array();
            }
        }
    
    使用or_like()/orlike(),有关更多信息,请参考:


    或者,您也可以使用CI来完成整个查询,而不是手工编写整个查询。查询的结果是什么?如何使用ActiveRecord?你能帮帮我吗@ghost谢谢。。它起作用了
    $this->db->select("ts.id,ts.state_name,tc.country_name");
    $this->db->from("STATE ts")
    $this->db->join("COUNTRY tc","tc.id = ts.country_id","Left");
    $this->db->like('ts.state_name', $word);
    $this->db->or_like('tc.country_name',$word);