考虑两个表。工作表有如下字段W_ID, W_Name
。课程表有如下字段C_ID, C_Name, C_Date
.
一个工人可以选修多门课程,一门课程也可以由许多工人选修。因此,两个表之间存在多对多关系。打破多对多,并创建一个名为 Takes 的新表,其中包含外键 W_ID 和 C_ID。
问题是:我想找出所有工人的名单以及他们最后参加的课程。例如,如果 W_ID=1,则 C_Date 为 20/01/2010、C_Date 25/10/2010 和 C_Date 20/12/2010。
那么需要的结果就是:
W_ID C_Date
1 20/12/2010
2
3
4
Edit
我想找到每个工人完成的课程的最长日期,因为工人会完成许多课程。我是商科学生,所以我不能使用 INNER JOIN 命令。可以用IN代替吗?
我在 Microsoft Access 中使用 SQL
SELECT w.w_id, MAX(c.c_date)
FROM worker w
LEFT JOIN
worker_course wc
ON wc.w_id = w.w_id
LEFT JOIN
course с
ON c.c_id = wc.c_id
GROUP BY
w.w_id
or this:
SELECT w.w_id, MAX(c.c_date)
FROM course с
JOIN worker_course wc
ON wc.c_id = c.c_id
RIGHT JOIN
worker w
ON w.w_id = wc.w_id
GROUP BY
w.w_id
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)