使用codeigniter中的join从3个表中获取不同的记录

时间:2013-01-02 04:51:47

标签: codeigniter join left-join inner-join outer-join

我有三张桌子 情况下,客户端,考勤

案例

id start_date end_date client_id status

1 2012-12-30 2013-01-30 1新开始

2 2012-12-31 2013-01-31 2试用期

在客户

id名称dob性别状态

1 TOM 1987-01-30 M A

2 JERRY 1985-01-31 F D

出席

id client_id日期状态

1 1 2013-01-30 A

2 1 2013-01-31 P

我需要这样的结果

case_id case_start_date case_end_date client_id名称       att_date atte_status

1 2012-12-30 2013-01-30 1 TOM       2013-01-30,2013-01-31 A,P

这可能吗?我是一个自学者,我在加入查询时没有好主意,请任何人帮助我....

2 个答案:

答案 0 :(得分:0)

试试这个..

$this->db->select('ca.*,ci.Name,a.date,a.status');
$this->db->from('cases'.' ca');
$this->db->join('clients'.' ci','ca.client_id=ci.id','left');
$this->db->join('attendance'.' a','a.client_id=ci.id','left');
return $this->db->get();

如果你想了解更多关于加入和活动记录的信息,请浏览user guide

答案 1 :(得分:0)

这是一个非常简单的示例,可让您开始使用任何数量的加入常见乐趣 Construcor Code 将$joins构造为数组:

$joins = array(
    array(
        'table' => 'table2',
        'condition' => 'table2.id = table1.id',
        'jointype' => 'LEFT'
    ),
);

示例函数处理连接为数组:

public function get_joins($table, $columns, $joins)
{
    $this->db->select($columns)->from($table);
    if (is_array($joins) && count($joins) > 0)
    {
        foreach($joins as $k => $v)
        {
            $this->db->join($v['table'], $v['condition'], $v['jointype']);
        }
    }
    return $this->db->get()->result_array();
}
相关问题