与查询CodeIgniter一样的多个表的搜索结果

时间:2018-03-16 06:05:56

标签: php mysql codeigniter

CodeIgniter / PHP / MYSQL

我有两个具有这种结构的表。

  1. COUNTRY:id,country_name(1,Indonesia,2,India)
  2. 状态:id,country_id,state_name(1,1,Sulawesi Selatan)(2,1,Sulawesi Tengah)(3,1,Sumatera Utara)(4,2,古吉拉特邦)
  3. 我想用多个表进行搜索。

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

    的结果

    印度尼西亚------- Sulawesi Selatan

    印度尼西亚------- Sulawesi Tengah

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

    如何在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%'
    

    使用此查询的输出:

    Sulawesi Selatan -------印度尼西亚

    Sulawesi Tengah -------印度尼西亚

    Sumatera Utara -------印度尼西亚

2 个答案:

答案 0 :(得分:1)

使用or_like()/ orlike(),有关详细信息,请参阅:https://codeigniter.com/userguide2/database/active_record.html

$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);

答案 1 :(得分:0)

你可以试试这段代码:

<强>控制器

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();
        }
    }
相关问题