按多列排序

时间:2013-02-22 23:58:42

标签: mysql codeigniter search union

在我的应用程序中,我正在两个不同的表和两个不同的列名上执行关键字搜索。我想将movies.titlepeople.title结合起来,以便我可以按字母顺序将所有这些组合在一起。目前我合并了我的两个查询,结果首先是电影,然后是人。

  public function get_from_keyword($keyword){

        $movie_query = $this->db
        ->select('id, title, release_year')
        ->from('movies')
        ->like('movies.title', $keyword)
        ->where('movies.id IS NOT NULL', null)
        ->get()
        ->result();

        $person_query = $this->db
        ->select('name, person_id')
        ->from('people')
        ->like('name', $keyword)
        ->get()
        ->result();

        $merged_queries = array_merge($movie_query, $person_query);
        return $merged_queries;

    }

我不确定是否需要动态更改SELECT查询中的一个列名,以便将它们合并在一起。

1 个答案:

答案 0 :(得分:1)

尝试使用“AS”将movies.title和people.name字段命名为:

   $person_query = $this->db
    ->select('name', 'MySortTitle') // AS
    ->select('person_id')
    ->from('people')
    ->like('name', $keyword)
    ->get()
    ->result();

对于电影查询也一样:

    $movie_query = $this->db
    ->select('title', 'MySortTitle') // AS
    ->select('id, release_year')
    ->from('movies')
    ->like('movies.title', $keyword)
    ->where('movies.id IS NOT NULL', null)
    ->get()
    ->result();

然后按MySortTitle对合并的数组进行排序。