【发布时间】:2021-06-02 07:39:45
【问题描述】:
我有以下主表
.------------------.
| id | parent_name |
.------------------.
| 1 | Mike |
| 2 | Sarah |
| 3 | Danial |
| 4 | Alex |
.------------------.
并具有以下子表详细信息:
.------------------------------------------.
| id | parent_id | child_name | birth year |
.------------------------------------------.
| 1 | 1 | mandy | 2000 |
| 2 | 1 | mark | 2003 |
| 3 | 1 | mathew | 2005 |
| 4 | 2 | sandy | 1998 |
| 5 | 2 | sharon | 2006 |
| 6 | 3 | david | 2001 |
.------------------------------------------.
在上面的示例中,我故意选择第一个字母与父母姓名匹配的孩子的名字,以便更容易理解这种关系,即使每个孩子都使用parent_id 连接到他/她的父母。
我想要的是所有父母的列表(4 行),并从 children 表中匹配 4 行,只选择每个尊敬的父母的最后一个出生的孩子。
.-------------------------------.
| id | parent_name | last_child |
.-------------------------------.
| 1 | Mike | mathew |
| 2 | Sarah | sharon |
| 3 | Danial | david |
| 4 | Alex | (null) |
.-------------------------------.
在 oracle 中,这很容易:
SELECT
p.id,
p.parent_name,
c.child_name last_child
FROM
parents_table p,
children_table c
WHERE
p.id = c.parent_id
AND c.birth_year = (SELECT MAX(birth_year) FROM children_table where parent_id = p.id)
但我正在努力在 MS Access 中生成相同的结果。MS Access 不接受子查询(用于选择同一父母的最大出生年份的孩子)。
有没有更好的方法在 MS Access 中获取结果?
【问题讨论】:
标签: sql ms-access master-detail