每个工人的最大日期

时间:2011-04-28 14:16:28

标签: sql date ms-access max

考虑两个表。 Worker表包含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

修改

我想找到每个工作人员完成的课程的最长日期,因为工人会做很多课程。我是商学院学生,所以我不能使用INNER JOIN命令。可以用IN代替吗?

我在Microsoft Access中使用我的SQL

2 个答案:

答案 0 :(得分:3)

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

或者这个:

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

答案 1 :(得分:0)

select W_ID,C_ID,max(C_Date)
from(select W_ID,C_ID,C_Date
    from worker
    join takes using (W_ID)
    join course using (C_ID)
)wc
group by W_ID,C_ID;