2017-06-07 11 views
0

私はこのような4つのテーブルれている: Database structurejoinを使用してcodeigniterの複数のテーブルからすべての列を選択する方法は?

は今、私はmodel.featured=1すべてのテーブルからすべての列を選択します。すなわち

model.id 
model.name 
model_attributes.id 
model_attributes.attributes_value 
model_images.id 
model_images.model_images 
attributes.id 
attributes.name 
attributes.value 

私は基本的なレベルのクエリを行うことができますし、私は解決策に近くのどこかだが、これは私が試したものであるかどうかわからないんだけど(何も返しません):

方法
$this->db->select('*'); 
$this->db->from('model'); 
$this->db->join('model_images','model.id = model_images.model_id','RIGHT'); 
$this->db->join('model_attributes','model.id = model_attributes.model_id','RIGHT'); 
$this->db->join('attributes','model_attributes.attributes_id = attributes.id','RIGHT'); 
$this->db->where('model.featured', 1); 
$query = $this->db->get(); 
return $query->result(); 

私は欲しいものを達成するのですか?あるいは、それを行う他のより良い方法がありますか?

+0

これらのテーブルを表示するためにどのデータベースソフトウェアを使用していますか?ちょっと興味があるんだけど。私はnavicatを使用します。私はまだ 'モデル'システムを試していませんでしたが。 – timothymarois

+0

ええ、それはhttps://dbdesigner.net –

+0

の完全な結合ですか? – Joe

答えて

0

//

$this->db->select('*'); 
$this->db->from('model'); 
$this->db->join('model_images','model_images.model_id = model.id'); 
$this->db->join('model_attributes','model_attributes.model_id = model.id'); 
$this->db->join('attributes','attributes.id = model_attributes.attributes_id'); 
$this->db->where('model.featured','1'); 
$query = $this->db->get()->result(); 
return $query; 
+0

@rabin lamaあなたはこのクエリを試してみましたか? – Anurag

0

下記のソリューションを通過してください、このクエリを試してみてください。

$this->db->select('model.*,model_images.*,model_attributtes.*, attributes.*'): 

それがうまく動作しない場合は教えてください。

+0

指定されたフィールドだけを選択しますが、すべてのテーブルからは選択しません。 –

+0

さて、私の別の答えを見つけてください –

0

以下の解決策を実行してください。複数の表に同じ列名がある場合は、両方の表に同じ名前の各列名の別名を与える必要があります。デフォルトでは、CIはすべての列名をマージして結果を生成するためです。

$this->db->select('*,c.name as c_name,s.name as s_name'); 
$this->db->from('country c'); 
$this->db->join('state s', 'c.id = s.country_id'); 
$query = $this->db->get(); 
関連する問題