sql – 每个工作者的MAX日期

前端之家收集整理的这篇文章主要介绍了sql – 每个工作者的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.

然后需要的结果是:

  1. W_ID C_Date
  2. 1 20/12/2010
  3. 2
  4. 3
  5. 4

编辑

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

我在Microsoft Access中使用我的sql

解决方法

  1. SELECT w.w_id,MAX(c.c_date)
  2. FROM worker w
  3. LEFT JOIN
  4. worker_course wc
  5. ON wc.w_id = w.w_id
  6. LEFT JOIN
  7. course с
  8. ON c.c_id = wc.c_id
  9. GROUP BY
  10. w.w_id

或这个:

  1. SELECT w.w_id,MAX(c.c_date)
  2. FROM course с
  3. JOIN worker_course wc
  4. ON wc.c_id = c.c_id
  5. RIGHT JOIN
  6. worker w
  7. ON w.w_id = wc.w_id
  8. GROUP BY
  9. w.w_id

猜你在找的MsSQL相关文章