0

私のアプリケーションでは、2 つの異なるテーブルと 2 つの異なる列名でキーワード検索を実行しています。movies.titleと を組み合わせて、people.titleすべてをアルファベット順に並べ替えたいと考えています。現在、私は2つのクエリをマージし、結果は最初に映画で返され、次に人々で返されます。

  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 つを動的に変更する必要があるかどうかはわかりません。

4

1 に答える 1

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 で並べ替えます。

于 2013-02-23T00:32:01.763 に答える