2017-02-25 3 views
1

私はCodeIgniterでクエリビルダーを使用して2つのテーブルからデータを選択する方法は?

'SELECT a.id, a.name, a.date, c.name FROM artist as a, country as c WHERE a.country_id=c.id' 

のMySQL 5に完璧に動作し、このクエリは、基本的には、アーティストのテーブルからID、名前と日付を選択し、国のテーブルからその適切な名前を持つ国のIDに置き換えられています。

注:artist.country_idは外部キーです(country.id)。すべてのアーティストはある国に属し、そのテーブルにはcountry_idがあります。私はアーティストのためのデータを取る必要があるだけでなく、適切な名前でcountry_idを置き換える必要があります。私は国の番号を表示したくない、私は国の名前を表示したい。

$artists = $this->db->query('SELECT a.id, a.name, a.date, c.name FROM artist as a, country as c WHERE a.country_id=c.id'); 

私が直面する問題は、artist.nameはcountry.nameによって上書きされていると私は、その結果で唯一の国の名前を、アーティスト名が表示されません。

CodeIgniterクエリービルダーでこれをどのように動作させることができますか?

私はCodeIgniterのバージョン3

Editを使用:より多くのコードを追加:結果の

$this->db->select('artist.id', 'artist.name', 'artist.date', 'country.name', false); 
    $this->db->from('artist'); 
    $this->db->join('country', 'country.id=artist.country_id'); 
    $artists = $this->db->get(); 

パート:結果で

[0] => stdClass Object 
    (
     [id] => 1 
     [name] => Macedonia 
     [date] => 1979-10-10 
    ) 

[1] => stdClass Object 
    (
     [id] => 2 
     [name] => Britain 
     [date] => 2003-01-01 
    ) 

ませアーティスト名を。国名はこのフィールドを上書きします。

artist table query with country name

+0

は、クエリビルダ –

答えて

1

あなたはまた、値にアクセスするjoins

$this->db->select('a.id as artist_id, a.name as artist_name, a.date as artist_date, c.name as country_name',false) 
$this->db->from('artist as a') 
$this->db->join('country as c','a.country_id = c.id'); 

を使用して行うことができ

$this->db-> 
select('a.id, a.name, a.date, c.name') 
->from('artist as a, country as c ') 
->where('a.country_id','c.id'); 

以下のようにサブクエリを書くことができます。

ます$ row-> artist_id
ます$ row-> ARTIST_NAME等...

+1

の**参加方法を調べるに参加して、あなたのコードを試みたが、私はアーティストのIDのみを取得します。私はまた、質問に多くのコードを追加しました。 – Vlad

+0

ok私はテーブル構造を持っていないので更新しました – denny

+0

join関数が2つの引数を受け入れるため、エラーが発生します。 – Vlad

関連する問題