我想要用多字段进行搜索,所以我决定联合查询,然后编写我的代码
$this->db->select("id, title, job_type");
$this->db->distinct();
$this->db->from("jobs");
$this->db->like('title',$keyword);
$this->db->get();
$query1 = $this->db->last_query();
$this->db->select("company");
$this->db->distinct();
$this->db->from("employers");
$this->db->join('jobs', 'jobs.userId = employers.userId');
$this->db->or_like('company',$company_name);
$this->db->get();
$query2 = $this->db->last_query();
$query = $this->db->query($query1." UNION ".$query2);
return $query->result();
如上面的代码生成以下sql查询语句如bellow
SELECT DISTINCT `id`, `title`, `job_type` FROM (`jobs`) WHERE `title`
LIKE '%dfsdf%' UNION SELECT DISTINCT `company` FROM (`employers`) JOIN
`jobs` ON `jobs`.`userId` = `employers`.`userId` WHERE `company` LIKE '%%'
并显示以下错误
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'JOIN
jobs
ONjobs
。userId
=employers
。userId
地点附近company
在第5行喜欢'%%'
任何人都可以帮助我
答案 0 :(得分:1)
首先,为了使用联合而不是。列和它们的数据类型应该在两个查询中匹配。
您正在尝试在选择三列的查询与另一个只有一列的查询之间建立联合。这不起作用。
要了解有关mysql联合的更多信息,可以查看以下链接 http://dev.mysql.com/doc/refman/5.0/en/union.html