我正在尝试从两个一对多相关的表(Subattivita.ID-Eventi-IDSubattivita)中检索第一个表中的某些字段以及第二个表中的另外两个字段(最后一个 Eventi.Evento 和第一个 Eventi.DataInserimento)。
我不知道为什么以下 SQL 查询会出错。有人能帮忙吗?
第一表:Subattivita
ID | 内容 |
---|---|
1 | 普罗瓦 |
2 | Prova2 |
3 | Prova3 |
4 | prova4 |
5 | Prova5 |
6 | Prova6 |
7 | prova7 |
9 | 制作设计 |
10 | Prova8 |
第二桌:Eventi
ID | 素巴提提维塔 | 埃文托 | 评论 | 数据采集 |
---|---|---|---|---|
1 | 1 | 阿佩尔塔 | 自动测量仪 | 2024 年 1 月 8 日 |
2 | 2 | 阿佩尔塔 | 自动测量仪 | 2024 年 1 月 8 日 |
3 | 3 | 阿佩尔塔 | 自动测量仪 | 2024 年 1 月 8 日 |
4 | 4 | 阿佩尔塔 | 自动测量仪 | 2024 年 1 月 8 日 |
5 | 5 | 阿佩尔塔 | 自动测量仪 | 2024 年 2 月 8 日 |
8 | 6 | 阿佩尔塔 | 自动测量仪 | 2024 年 2 月 8 日 |
9 | 7 | 阿佩尔塔 | 自动测量仪 | 2024 年 2 月 8 日 |
12 | 9 | 阿佩尔塔 | 自动测量仪 | 2024 年 2 月 8 日 |
十三 | 10 | 阿佩尔塔 | 自动测量仪 | 2024 年 2 月 8 日 |
14 | 1 | 评论 | 测试1 | 2024 年 5 月 8 日 |
15 | 2 | 评论 | Testo2 | 2024 年 5 月 8 日 |
16 | 3 | 评论 | Testo3 | 2024 年 6 月 8 日 |
17 | 4 | 评论 | Testo4 | 2024 年 6 月 8 日 |
18 | 5 | 评论 | Testo5 | 2024 年 7 月 8 日 |
19 | 6 | 评论 | Testo8 | 2024 年 8 月 8 日 |
20 | 7 | 评论 | Testo9 | 2024 年 9 月 8 日 |
21 | 9 | 评论 | Testo12 | 2024 年 9 月 8 日 |
22 | 9 | 评论 | 按照设计继续。 | 2024 年 9 月 8 日 |
23 | 9 | 卡利卡塔 | 绘制。 | 2024 年 9 月 8 日 |
24 | 9 | 基乌萨 | 设计已获批准 | 2024 年 9 月 8 日 |
所需查询结果:
ID | 最后的事件 | 第一数据统计 |
---|---|---|
1 | 评论 | 2024 年 1 月 8 日 |
2 | 评论 | 2024 年 1 月 8 日 |
3 | 评论 | 2024 年 1 月 8 日 |
4 | 评论 | 2024 年 1 月 8 日 |
5 | 评论 | 2024 年 2 月 8 日 |
6 | 评论 | 2024 年 2 月 8 日 |
7 | 评论 | 2024 年 2 月 8 日 |
9 | 基乌萨 | 2024 年 2 月 8 日 |
10 | 阿佩尔塔 | 2024 年 2 月 8 日 |
我尝试使用以下 SQL 查询,但 Access 要求输入 u.Evento 值:
SELECT
t.ID,
u.Evento as LastEvento,
p.DataInserimento as FirstDataInserimento
FROM
((Subattivita t
INNER JOIN
(SELECT IDSubattivita, MAX(ID) as MaxID FROM Eventi GROUP BY IDSubattivita) u ON t.ID = u.IDSubattivita)
INNER JOIN
(SELECT IDSubattivita, MIN(ID) as MinID FROM Eventi GROUP BY IDSubattivita) p ON t.ID = p.IDSubattivita);
那不是错误消息。这是查询提示输入值,因为查询引用了数据集中没有的字段 - 正如@TimRoberts 所指出的。看起来你想要每个 IDSubattivita 的 Min(DataInserimento)。提取与每个 IDSubattivita 的最大 ID 相关的 Evento 更为复杂。考虑:
或者这个版本: