私は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();
}
で、それは私が何を取得、データが表示されます。
しかし、私は完全なユーザーリストと統計情報のみが必要です。
私は結合でこれを行うことはできますか?私はそうするだろうか?
このヘルプを願っていますあなたのケースでは、左結合を追加する必要があります。 '$ this-> db-> join(' training_stats '、' training_stats.user_id = users.id '、' left ');' –
どのようにして1つのコースだけを定義できますか? $ course_idから。私は選択したコースのデータだけを持っている必要があります – frobak
あなたはあなたのwhere句にそれを渡すことができます –