2016-07-13 12 views
0

私はCodeigniterを使用しており、2/3テーブルに参加する必要があります。私はそれをうまく解決できません。Codeigniter 3 2/3テーブルを結合する

一般的なユーザー情報を持つusersテーブルがあります。

user_id 
first_name 
last_name 

私は

など期日などの情報とコース統計ページを持っている
id 
course_id 
user_id 
due 
completed_on 

ユーザーがコースを選ぶだろうし、その後、組織のユーザーのリストを提示されます。割り当てられる準備ができています。ユーザーはすでにコースに割り当てられていて、他のユーザーが統計情報を持っていない場合は統計表に統計情報を持っている可能性があります。

統計情報があれば、選択したコースに任意の統計情報を含むユーザーのリストを表示する必要があります。

SO、私がモデルにORG_IDを送信しています(その組織のユーザーのリストを取得する)と、選択したCourse_IDに(それらが存在するならば、彼からすべての統計情報を取得するためには、テーブル統計)

ここに私の方法です統計テーブルの統計情報がある場合、統計表には統計が存在しない場合は現時点でモデル

// get users for an org along with stats 
public function get_course_user_data($org_id,$course_id) { 
    $user_array = array('users.org_id =' => $org_id);  
    $this->db->select('users.id,users.first_name,users.last_name,training_stats.due,training_stats.completed_on'); 
    $this->db->order_by('users.first_name', 'asc'); 
    $this->db->where($user_array); 
    $this->db->join('training_stats','training_stats.user_id = users.id', 'left'); 
    $this->db->join('training_courses','training_courses.course_id = training_stats.course_id', 'left'); 
    $user_object = $this->db->get('users'); 
    return $user_object->result(); 
} 

で、それは私が何を取得、データが表示されます。

しかし、私は完全なユーザーリストと統計情報のみが必要です。

私は結合でこれを行うことはできますか?私はそうするだろうか?

+0

このヘルプを願っていますあなたのケースでは、左結合を追加する必要があります。 '$ this-> db-> join(' training_stats '、' training_stats.user_id = users.id '、' left ');' –

+0

どのようにして1つのコースだけを定義できますか? $ course_idから。私は選択したコースのデータだけを持っている必要があります – frobak

+0

あなたはあなたのwhere句にそれを渡すことができます –

答えて

0

この文字列で検索してください:私はあなたが何かを忘れてしまった

// get users for an org along with stats 
public function get_course_user_data($org_id,$course_id) { 
    $this->db->select('users.id,users.first_name,users.last_name,training_stats.due,training_stats.completed_on'); 
    $this->db->order_by('users.first_name', 'asc'); 
    $this->db->join('training_stats','training_stats.user_id = users.id', 'left'); 
    $this->db->join('training_courses','training_courses.course_id = training_stats.course_id', 'left'); 
    $this->db->where("(training_courses.course_id = $course_id AND training_stats.course_id = $course_id)"); 
    $this->db->or_where("(users.org_id = $org_id)"); 
    $user_object = $this->db->get('users'); 
    return $user_object->result(); 
} 
0

だと思う...この後

$this->db->from('table_name'); 

を....

$this->db->select('users.id,users.first_name,users.last_name,training_stats.due,training_stats.completed_on'); 

私は

関連する問題