【发布时间】:2014-08-01 16:56:45
【问题描述】:
我有一个包含表格的数据库: 用户、用户课程、课程和课程类别
结构类似于下图:
用户 -------------------------------------------------- ---------- id 用户名 -------------------------------------------------- ---------- 1 约翰 2 艾米 3 莎拉 4 詹姆斯 5 尼克 USER_COURSES -------------------------------------------------- ---------- user_id course_id -------------------------------------------------- ---------- 1 2 1 3 1 4 2 2 3 1 4 3 5 4 5 5 培训班 -------------------------------------------------- ---------- id, course_category_id course_name -------------------------------------------------- ---------- 1 1 英语 2 1 英国文学 3 2 代数 4 3物理 5 3 生物学 课程类别 -------------------------------------------------- ---------- id 类别名称 -------------------------------------------------- ---------- 1 种语言 2 数学 3 科学 4 计算我正在尝试编写一个带有 user_id 的查询,例如id 1 为 John 并返回显示共同课程的确切数量(course_id 匹配的课程)和共同课程的数量(category_id 相同的课程)的结果
所以基于上面的示例数据库,查询应该返回以下内容:
-------------------------------------------------- ---------- 用户 ID |用户名 | num_exact_courses | num_common_courses -------------------------------------------------- ---------- 2 艾米 1 0 3 莎拉 0 1 4 詹姆斯 1 0 5 尼克 1 1我将如何做到这一点?非常感谢这里的一些帮助。谢谢
【问题讨论】:
-
我不明白... 唯一 course_ID 为 1 的 Sarah 与课程为 (2,3,4) 的 John 不共享任何课程是完全匹配的吗?结果似乎与我对要求的理解不符。
-
我也迷路了。 Amy 和 John 都有 course_id 2 但不匹配。
-
精确课程和普通课程如何区分?
-
@xQbert 你说的都对,我已经更新了问题以显示正确的结果。
-
@JohnRuddell 精确课程是 course_id 相同的课程,普通课程是 ID 不同但属于同一类别的课程。