2013-02-22 164 views
0

在我的應用程序中,我在兩個不同的表格和兩個不同的列名稱上執行關鍵字搜索。我想合併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

嘗試使用 「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對合並的數組進行排序。