我正在使用Codeigniter,我需要加入2/3表。我无法解决这个问题。
我有一个users
表,其中包含一般用户信息。
user_id
first_name
last_name
我有一个课程统计页面,其中包含截止日期等信息。
id
course_id
user_id
due
completed_on
用户将选择一个课程,然后会看到他们组织的用户列表。准备分配。用户可能已经被分配到课程并且在统计表中有统计数据,而其他用户可能没有统计数据。
因此,如果统计数据当然存在,我需要显示所选课程的任何统计数据的用户列表。
所以,我正在向模型发送一个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();
}
目前,如果stats表中有统计数据,那么它会显示数据,如果stats表中没有统计数据,我什么也得不到。
但是我需要一个完整的用户列表,如果存在则只需要统计数据。
我甚至可以通过加入来做到这一点吗?我会这样呢?
答案 0 :(得分: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();
}
答案 1 :(得分:0)
我觉得你忘记了......
$this->db->from('table_name');
之后......
$this->db->select('users.id,users.first_name,users.last_name,training_stats.due,training_stats.completed_on');
我希望这个帮助