在这里,我想加入这三个表,即salary
,payroll
和attendance
。首先,我想加入salary.salary_template_id
employee.salary_template_id
,之后我想与employee.user_id
加入attendance.user_id
以获得每个user_id
的基本工资。我该如何加入?
我的工资表看起来像这样
我收到此错误
'on clause'中的未知列'tbl_employee_payroll.salary_template_id'
salary_template_id salary_grade basic_salary overtime_salary
1 a 10000
2 b 15000
我的员工表看起来像这样
payroll_id user_id salary_template_id
1 1 NULL
2 36 2
3 43 1
我的出席看起来像这样
attendance_id user_id leave_category_id date_in date_out attendance_status
13 36 0 2017-01-02 2017-01-02 1
14 36 3 2017-01-04 2017-01-04 3
这是我的代码
public function attendance_report_by_empid($user_id = null, $sdate = null) {
$this->db->select('attendance.*', FALSE);
$this->db->select('employee.*', FALSE);
$this->db->select('salary.*', FALSE);
$this->db->from('attendance');
$this->db->join('salary', 'salary.salary_template_id = employee.salary_template_id', 'inner');
$this->db->join('employee', 'employee.user_id = attendance.user_id', 'left');
$this->db->where('attendance.user_id', $user_id);
$this->db->where('attendance.date_in', $sdate);
$this->db->where('attendance.date_out <=', $sdate);
$query_result = $this->db->get();
$result = $query_result->result();
return $query;
}
我的结果应该是这样的
attendance_id user_id leave_category_id date_in date_out attendance_status salary
13 36 0 2017-01-02 2017-01-02 1 1000
14 36 3 2017-01-04 2017-01-04 3 1000
答案 0 :(得分:0)
根据您的愿望输出查询应该像这样
$this->db->select('*');
$this->db->from('attendence');
$this->db->join('salary'.'employee.salary_template_id', 'attendence.salary_template_id = table2.id',);
$this->db->join('employee', 'employee.user_id = attendance.user_id');
$query = $this->db->get();
答案 1 :(得分:0)
您正在错误的桌子上申请加入
$this->db->select('attendance.*', FALSE);
$this->db->select('employee.*', FALSE);
$this->db->select('salary.*', FALSE);
$this->db->from('salary ');
$this->db->join('employee', 'salary.salary_template_id = employee.salary_template_id', 'inner');
$this->db->join('attendance', 'employee.user_id = attendance.user_id', 'left');
$this->db->where('attendance.user_id', $user_id);
$this->db->where('attendance.date_in', $sdate);
$this->db->where('attendance.date_out <=', $sdate);
$query_result = $this->db->get();
$result = $query_result->result();
答案 2 :(得分:0)
我通过更改我的代码来获得它
public function attendance_report_by_empid($user_id = null, $sdate = null) {
$this->db->select('attendance.*', FALSE);
$this->db->select('employee.*', FALSE);
$this->db->select('salary.*', FALSE);
$this->db->from('attendance');
$this->db->join('employee', 'employee.user_id = attendance.user_id', 'left');
$this->db->join('salary', 'salary.salary_template_id = employee.salary_template_id', 'inner');
$this->db->where('attendance.user_id', $user_id);
$this->db->where('attendance.date_in', $sdate);
$this->db->where('attendance.date_out <=', $sdate);
$query_result = $this->db->get();
$result = $query_result->result();
return $query;
}
问题是我们必须在使用该表进行连接之前声明该表。