【发布时间】:2018-05-28 09:46:44
【问题描述】:
我有以下 SQL 表(在 MySQL 中):
students
+-----+------------+
| id | first_name |
+-----+------------+
| 01 | John |
+-----+------------+
| 02 | Jane |
+-----+------------+
| 03 | Peter |
+-----+------------+
academics
+-----+-----------+----------+------+
| id | year_start| year_end |status|
+-----+-----------+----------+------+
| 10 | 2016 | 2017 |1 |
+-----+-----------+----------+------+
| 20 | 2017 | 2018 |0 |
+-----+-----------+----------+------+
enrollments
+----+------------+-------------+
| id | student_id | academic_id |
+----+------------+-------------+
| 1 | 01 | 10 |
+----+------------+-------------+
| 2 | 02 | 20 |
+----+------------+-------------+
| 3 | 01 | 20 |
+----+------------+-------------+
我如何从students table 和enrollments table 获得当前学年未注册或enrollments table 中没有当前学年记录的学生。
现在我可以通过以下查询获取students table 中没有在enrollments table 中注册详细信息的学生:
$students = \DB::table('students')
->select(
'students.id',
'first_name'
)
->leftJoin('enrollments','enrollments.student_id','=','students.id')
->whereNull('enrollments.student_id')
->get();
根据上表中的数据,此查询将返回学生Peter - 03。
但是我如何才能找到没有当前学年入学详细信息的学生?
这是我确定当前学年的方式:
$current_academic = Academic::where('status', 1)->first();
使用现有查询,我如何加入academics table,以便查询出当前学年没有入学记录的学生。
非常感谢您认真的回答和建议。
【问题讨论】:
-
你从 $current_academic 中得到了什么?
-
我得到了当前学年。在这种情况下 2017/2018 的 id 是 10
标签: php mysql sql database laravel