【发布时间】:2018-05-14 01:46:46
【问题描述】:
我在做什么?
我正在根据研究显示用户。 我想获取每个用户最后学习的课程。
有问题?
我没有根据上次学习的课程获得最后的课程名称。我得到了第一个课程名称。(java) 但我希望 (oracle) 作为用户最后学习的课程。
用户表
user_id | Name
====================
1 | Zishan
2 | Ellen
课程表
course_id | course_name | user_id | course_year
==================================================
1 | java | 1 | 2015
2 | C++ | 1 | 2017
3 | oracle | 1 | 2016
4 | dot net | 2 | 2016
结果表
Name | last_course_name | last_course_year
============================================
Zishan | java | 2017
Ellen | dot net | 2016
预期结果
Name | last_course_name | last_course_year
============================================
Zishan | C++ | 2017
Ellen | dot net | 2016
查询
SELECT `u`.`name`, MAX(`c`.`course_year`) as last_course_year , `c`.`course_name` as last_course_name
FROM `user` as `u`
LEFT OUTER JOIN `course` as `c` ON `u`.`id` = `c`.`user_id`
GROUP BY `u`.`id`
活动记录查询:
$this->db->select('u.name','c.course_name as last_course_name');
$this->db->select_max('c.course_year as last_course_year');
$this->db->from('user as u');
$this->db->join('course as c', 'u.id = c.user_id', 'left');
$this->db->join('course as c1', 'c.user_id = c1.user_id', 'left outer');
$this->db->where('c1.user_id IS NULL', null, false);
$this->db->group_by('u.id');
$user_couse_data_query = $this->db->get();
【问题讨论】:
-
您的预期结果集错误应该是紫山的C++?同样对于 Ellen 为什么 dot net 为什么不使用 oracle 两者都在同一年
-
@MKhalidJunaid for ellen 只有一个条目,所以 dot net 是正确的,但是我同意 zishan 它应该是 c++
标签: php sql codeigniter greatest-n-per-group