我有两个表,例如注册表和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();
答案 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();