【发布时间】:2018-08-27 12:52:31
【问题描述】:
我有一个用于存储审计的数据库表,如下所示(它只是实际表的简单表示,其中 STATUS 可以具有多个值之一)
身份证 |学生 ID |课程 ID |地位 1 | 5 | 12 |已注册 2 | 5 | 12 |进行中 3 | 2 | 12 |已注册 4 | 2 | 12 |完全的 5 | 5 | 12 |完全的 6 | 2 | 14 |已注册我需要查找给定 STUDENT_ID 和 COURSE_ID 对的所有记录作为标识符,其中 STATUS 属于 Enrolled 和 Completed(即每个 Enrolled 和 Completed 状态有 2 条记录,或者 Enrolled 或 Completed 状态只有一条记录)。
注意 - 对于给定的 STUDENT_ID 和 COURSE_ID,不应存在 STATUS 不是 Enrolled & Completed 的条目。
输出表 -
身份证 |学生 ID |课程 ID |地位 3 | 2 | 12 |已注册 4 | 2 | 12 |完全的 6 | 2 | 14 |已注册更新 - 如果我有另一个 STUDENT_ID 2 条目的状态为 In-Progress,它仍应返回状态为 Enrolled 和 Completed 的课程。
身份证 |学生 ID |课程 ID |地位 1 | 5 | 12 |已注册 2 | 5 | 12 |进行中 3 | 2 | 12 |已注册 4 | 2 | 12 |完全的 5 | 5 | 12 |完全的 6 | 2 | 14 |已注册 7 | 2 | 14 |进行中输出表 -
身份证 |学生 ID |课程 ID |地位 3 | 2 | 12 |已注册 4 | 2 | 12 |完全的【问题讨论】:
-
我不明白你的输出学生 5 已经注册并完成了课程 12 那么为什么不输出学生 6 还没有完成课程 14?
-
@P.Salmon - 因为对于课程 12,学生 5 也有一个记录在进行中状态。对于任何学生课程对,都应仅具有已注册或已完成或既已注册又已完成状态。
标签: mysql sql select subquery relational-database