如何从数据库中的多个表中搜索关键字,并且JOIN表

时间:2017-11-20 06:21:31

标签: php mysql codeigniter

如果结果可用,我想在不同的表中搜索关键字然后我需要将该行数据返回给Codeigniter controller.my模型函数如下:

public function get_search($match) 
{
$this->db->select('*');
$this->db->like('blog.blog_title',$match);
$this->db->like('casestudy.title',$match);
$this->db->from('blog,casestudy');
$query = $this->db->get();
print_r($this->db->last_query()); exit;
return $query->result();
}

1 个答案:

答案 0 :(得分:1)

由于两个表之间没有关系,因此进行连接可能没有意义,而您当前正在做的是交叉连接。相反,考虑将两个表联合起来:

$first = DB::table('blog')
            ->where('blog_title', 'like', '%' . $match . '%')

$second = DB::table('casestudy')
             ->where('title', 'like', '%' . $match . '%')
             ->unionAll($first)
             ->get();

这个答案假设您希望从每个表中执行SELECT *,这反过来意味着两个表的列具有相同的类型和顺序。如果不是这种情况,那么你可以通过选择你希望成为联合查询一部分的特定列来改进我上面写的内容。

为了便于阅读,我想到的原始查询是:

SELECT * FROM blog WHERE blog_title LIKE '%'.$match.'%'
UNION ALL
SELECT * FROM casestudy WHERE title LIKE '%'.$match.'%';