内部联接3个不同的表codeigniter

时间:2018-08-02 17:24:21

标签: php database codeigniter inner-join

我需要连接三个相互获取的表(不集中到一个表上)

第一个表:出勤

---------------------------------------------------------------
|   id    |   emp_code   |   emp_name   |  date    |   time   |
|   001   |   TNY        |   Tony       |01.01.2001|   07.00  |
|   002   |   PPR        |   Pepper     |01.01.2001|   07.50  |
---------------------------------------------------------------

第二个表:员工

---------------------------------------------------------
|   emp_code   |   emp_name   |division_code|  address  |
|   TNY        |   Tony       |    D001     |  New york |
|   PPR        |   Pepper     |    D002     | California|
---------------------------------------------------------

第3个表格:部门

-----------------------------
|division_code|division_name|
|   D001      |   Finance   |
|   D002      |  Marketing  |
-----------------------------

我想要得到的结果是:

-----------------------------------------------------------------------------
|   id    |   emp_code   |   emp_name   |division_name|  date    |   time   |
|   001   |   TNY        |   Tony       |  Finance    |01.01.2001|   07.00  |
|   002   |   PPR        |   Pepper     |  Marketing  |01.01.2001|   07.50  |
-----------------------------------------------------------------------------

我的模型代码:

    function ShowData()
{
    $this->db->select('attendance.emp_code, attendance.emp_name,division.division_name,attendance.date,attendance.time');    
    $this->db->from('attendance');
    $this->db->join('employee', 'employee.emp_code = attendance.emp_code');
    $this->db->join('division', 'employee.division_code = division.division_code');
    $query = $this->db->get();
}

我的代码的结果什么也没有,没有显示任何数据,我认为这是因为我的查询

2 个答案:

答案 0 :(得分:0)

您的方法什么都不是returning

$this->db->selct('a.id, a.emp_code, a.emp_name, d.divison_node, a.date, a.time');
$this->db->join('employee AS e', 'e.emp_code = a.emp_code');
$this->db->join('division AS d', 'd.division_code = e.division_code');
return $this->db->get('attendance AS a')->result(); 

答案 1 :(得分:0)

您的代码缺少最终的数据获取器:

function ShowData()
{
    $this->db->select('attendance.emp_code, attendance.emp_name,division.division_name,attendance.date,attendance.time');    
    $this->db->from('attendance');
    $this->db->join('employee', 'employee.emp_code = attendance.emp_code');
    $this->db->join('division', 'employee.division_code = division.division_code');
    $query = $this->db->get();

    $data = $query->result_array(); // here will be stored the selected data as an array

}

$this->db->get();仅使用CI查询构建器创建一个SQL语句并执行它,它不返回SQL输出数据,您只收到查询本身的对象。< / p>

但是$query->result_array();获取SQL输出数据并为您格式化数据-在这种情况下为数组。

如果要返回数据,只需将此行添加到函数主体中即可:

return $data;