[英]multiple join in codeigniter
這里有三個表,即tbl_users
, tbl_account_details
, tbl_attendance
.table tbl_users
看起來像這樣
user_id username role_id activated banned
1 admin 1 1 0
36 siraj 3 1 0
37 faizal 3 1 0
38 nesru 3 1 0
40 jaseer 3 1 0
42 maltu 3 1 0
43 shahul 3 1 0
表tbl_account_details
看起來像這樣
account_details_id user_id fullname designations_id
1 1 Administrator 1
33 36 siraj 2
34 37 faizal 3
35 38 nesru 3
37 40 jaseer 4
39 42 maltu 4
40 43 shahul 2
我的tbl_attendance
表看起來像這樣
attendance_id user_id date_in attendance_status status 0=absent 1=present 3 = onleave 4 = onoff
1 1 2017-02-05 1
2 36 2017-02-11 4
3 36 2017-02-11 4
4 36 2017-02-11 3
5 1 2017-02-02 1
6 36 2017-02-01 1
我想所有users
,其中users
是不是在onleave
和onoff
在當天的tbl_attendance
請假.the出勤狀況是3
和關閉是4為了得到我寫了一個查詢,看起來像這樣
public function get_manager_cordinator_users($date)
{
$this->db->select('tbl_account_details.*', FALSE);
$this->db->select('tbl_users.*');
$this->db->join('tbl_account_details', 'tbl_users.user_id = tbl_account_details.user_id', 'left');
$this->db->where(array('designations_id' => 2));
$this->db->or_where(array('designations_id' => 3));
$this->db->where('tbl_users.user_id NOT IN(SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in='.$date.' && attendance_status=3 OR attendance_status=4 )');
$query_result = $this->db->get('tbl_users');
$result = $query_result->result();
return $result;
}
my controller looks like this
$date=date('Y-m-d');
$data['assign_user'] = $this->Project_model->get_manager_cordinator_users($date);
請幫我解決...
我創建了一個查詢,它將返回具有 designation_id 2 和 3 的用戶數據,這些用戶也沒有參與狀態 3 和 4
你的控制器代碼很好 -
$date = date('Y-m-d');
$data['assign_user'] = $this->Project_model->get_manager_cordinator_users($date);
只需使用以下代碼更改您的型號代碼 -
public function get_manager_cordinator_users($date)
{
$this->db->select( 'tbl_users.user_id, tbl_users.username,tbl_account_details.designations_id, tbl_attendance.date_in, tbl_attendance.attendance_status' );
$this->db->from( 'tbl_users' );
$this->db->join( 'tbl_account_details', 'tbl_account_details.user_id = tbl_users.user_id' );
$this->db->join( 'tbl_attendance', 'tbl_attendance.user_id = tbl_users.user_id' );
$this->db->where( 'tbl_attendance.date_in', $date );
$this->db->where('tbl_users.banned', 0);
$this->db->where('tbl_users.activated', 1);
$this->db->where_in( 'tbl_account_details.designations_id', array( '2', '3' ) );
$this->db->where_not_in( 'tbl_attendance.attendance_status', array( '3', '4' ) );
return $this->db->get()->result();
}
它將為您提供所需的用戶數據。
現在我明白了
public function get_manager_cordinator_users()
{
$date=date('Y-m-d');
$this->db->select('tbl_users.*');
$this->db->join('tbl_account_details', 'tbl_users.user_id = tbl_account_details.user_id', 'left');
$this->db->where('tbl_users.user_id NOT IN(SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in= "'.$date.'" AND tbl_attendance.attendance_status IN (3,4) ) ');
$this->db->where_in( 'tbl_account_details.designations_id', array( '2','3' ) );
$this->db->where('tbl_users.banned', 0);
$this->db->where('tbl_users.activated', 1);
$query_result = $this->db->get('tbl_users');
$result = $query_result->result();
return $result;
}
用這個
$this->db->select('tbl_account_details.*', FALSE);
$this->db->select('tbl_users.*');
$this->db->join('tbl_users', 'tbl_users.user_id = tbl_account_details.user_id', 'left');
$this->db->where('(designations_id=2 or designations_id=3 )');
$this->db->where('tbl_users.user_id NOT IN(SELECT user_id FROM tbl_attendance WHERE tbl_attendance.date_in='.$date.' && attendance_status=3 OR attendance_status=4 )');
$query_result = $this->db->get('tbl_users');
$result = $query_result->result();
return $result;
$this->db->select('*)->from('tbl_users')->where('tbl_attendance.attendance_status <= 2')->where('tbl_attendance.data_in =',date('Ym-d '))->join('tbl_attendance','tbl_attendance.user_id = 'tbl_users.user_id','left')->get()->result();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.