sql - 每个 worker 的最大日期

标签 sql date ms-access max

考虑两个表。 Worker 表具有诸如 W_ID、W_Name 之类的字段。类(class)表包含 C_ID、C_Name、C_Date 等字段。

一个 worker 可以选修多门类(class),一门类(class)也可以由许多 worker 选修。因此,两个表之间存在多对多关系。打破多对多,并创建一个名为 Takes 的新表,其中包含外键 W_ID 和 C_ID。

问题是:我想找出所有 worker 的名单以及他们最后修读的类(class)。例如,如果 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

编辑

我想找到每个 worker 完成的类(class)的最长日期,因为 worker 会完成许多类(class)。我是商科学生,所以我不能使用 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

或者这个:

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

关于sql - 每个 worker 的最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820042/

相关文章:

swift - 如何将当前日期保存到 CoreData?

vba - MS Access,DoEvents 退出循环

java - 基于坐标的搜索

sql - 如何使用 last_insert_rowid 插入多行?

php - fetchAll 函数中表名的占位符变量

sql - 返回表的字段名称的 SQL 命令是什么?

java - 不可解析的日期异常 - 月日期格式

sql oracle忽略节假日

sql 按一列分组,然后过滤一列并为不同的值创建新列

sql - 如何将具有多个值的列加载到表中的单独行中