如何将表格与第二张表格的最新记录结合起来

时间:2019-07-19 07:58:08

标签: php mysql codeigniter codeigniter-3

我有两个表,例如注册表和AcademicDetails表,并且根据注册ID我在学术表中有两个记录,但是我想加入学术表的最新记录。

查询:

SELECT a.*, b.status AS ac_status 
FROM registration AS a 
LEFT JOIN academicdetails AS b ON a.id = b.registration_id 
WHERE b.status = '1' 
ORDER BY id DESC 
LIMIT 100

PHP代码:

if(isset($search['category']) && $search['category']!=''){
         $condition = ', TIMESTAMPDIFF(YEAR, a.dob, CURDATE()) AS age';
    }

    $this->db->select('a.*,b.status as ac_status'.$condition);
    $this->db->from("registration as a");
    $this->db->join('academicdetails as b','a.id = b.registration_id','left');
    if(isset($search['search_by_name']) && $search['search_by_name']!=''){
         $this->db->where('a.name', $search['search_by_name']);
    }
    if(isset($search['gender']) && $search['gender']!=''){
         $this->db->where('a.gender', $search['gender']);
    }

    if(isset($search['status']) && $search['status']!=''){
            $this->db->where('b.status', $search['status']);
    }

    if(isset($search['category']) && $search['category']!=''){
         if($search['category']=='Youth'){
          $this->db->where('age>10 AND age<18');
         }elseif($search['category']=='Junior'){
          $this->db->where('age>17 AND age<22');
         }elseif($search['category']=='Senior'){
          $this->db->where('age > 21');
         }
    }

    if(isset($search['course']) && $search['course']!=''){
         $this->db->where('b.course', $search['course']);
    }

    $this->db->limit($search['limit'], $search['start']);
    $this->db->order_by($this->id, $this->order);
    $this->db->group_by('a.id');
    $query = $this->db->get();

2 个答案:

答案 0 :(得分:0)

请尝试以下查询:

SELECT * FROM `registration` LEFT JOIN academicdetails on registration.id = academicdetails.id ORDER BY academicdetails.id desc LIMIT 100;

答案 1 :(得分:0)

尝试一下:-

$this->db->select("a.*, b.status AS ac_status");
$this->db->from('registration AS a');
$this->db->join('academicdetails AS b', 'b.registration_id = a.id', 'left');
$this->db->where("b.status",1);
$this->db->order_by("b.id","DESC");//primary key or id of your academic table.
$this->db->limit(100);
$this->db->get();