从链接 table 访问 2010 return 最新记录
Access 2010 return most recent record from a linked table
我正在使用带有两个表的 Access 跟踪项目:
CREATE TABLE projects
(
wonum varchar(10) NOT NULL PRIMARY KEY,
description varchar(255),
location varchar(16),
status varchar(10),
owner varchar(24),
);
CREATE TABLE comments
(
commentid AUTONUMBER NOT NULL PRIMARY KEY,
wonum varchar(10) NOT NULL,
commentdt DATETIME,
commenttext varchar(255),
FOREIGN KEY (wonum) REFERENCES projects(wonum)
);
'projects' 列出每个单独的项目,'comments' 存储评论。我正在尝试构建一个报告,其中列出来自 'projects' 的每条记录以及来自 'comments' 的与该项目相关的最新评论,如下:
QueryResultSet
project.wonum
project.description
project.location
project.status
project.owner
comments.commenttext /*most recent comment*/
我已经尝试了来自“net”的许多不同的连接和子查询。这个看起来很有希望:
SELECT projects.wonum, max(comments.commentdt) AS lastdate
FROM projects INNER JOIN comments ON projects.wonum=comments.wonum
GROUP BY projects.wonum
这 returns 符合我的预期,但是当我尝试包含除 projects.wonum 和 comments.commentdt 之外的任何其他字段时,Access 出错了。
一种方法是使用相关子查询来获取每个项目的最大评论:
SELECT c.*
FROM projects as p INNER JOIN
comments as c
ON p.wonum = c.wonum
WHERE c.commentdt = (SELECT MAX(commentdt)
FROM comments as c2
WHERE c2.wonum = c.wonum
)
GROUP BY c.wonum
SELECT
您想要的字段来自 projects 并使用相关子查询从每个项目的最新评论中获取文本。
SELECT
p.wonum,
p.description,
p.location,
p.status,
p.owner,
(
SELECT TOP 1 c.Commenttext
FROM comments AS c
WHERE c.wonum = p.wonum
ORDER BY c.commentdt DESC, c.commentid DESC
) AS most_recent_comment
FROM projects AS p;
我不知道 comments 是否允许对同一个 wonum 重复 commentdt .所以我将 c.commentid DESC
添加到 ORDER BY
到服务器作为 TOP 1
的决胜局,以防出现重复。但是如果你对 wonum 和 commentdt 的组合有唯一约束,你可以只使用 ORDER BY c.commentdt DESC
在 comments.wonum 和 comments.commentdt 上添加索引(如果它们尚未编入索引)。
我正在使用带有两个表的 Access 跟踪项目:
CREATE TABLE projects
(
wonum varchar(10) NOT NULL PRIMARY KEY,
description varchar(255),
location varchar(16),
status varchar(10),
owner varchar(24),
);
CREATE TABLE comments
(
commentid AUTONUMBER NOT NULL PRIMARY KEY,
wonum varchar(10) NOT NULL,
commentdt DATETIME,
commenttext varchar(255),
FOREIGN KEY (wonum) REFERENCES projects(wonum)
);
'projects' 列出每个单独的项目,'comments' 存储评论。我正在尝试构建一个报告,其中列出来自 'projects' 的每条记录以及来自 'comments' 的与该项目相关的最新评论,如下:
QueryResultSet
project.wonum
project.description
project.location
project.status
project.owner
comments.commenttext /*most recent comment*/
我已经尝试了来自“net”的许多不同的连接和子查询。这个看起来很有希望:
SELECT projects.wonum, max(comments.commentdt) AS lastdate
FROM projects INNER JOIN comments ON projects.wonum=comments.wonum
GROUP BY projects.wonum
这 returns 符合我的预期,但是当我尝试包含除 projects.wonum 和 comments.commentdt 之外的任何其他字段时,Access 出错了。
一种方法是使用相关子查询来获取每个项目的最大评论:
SELECT c.*
FROM projects as p INNER JOIN
comments as c
ON p.wonum = c.wonum
WHERE c.commentdt = (SELECT MAX(commentdt)
FROM comments as c2
WHERE c2.wonum = c.wonum
)
GROUP BY c.wonum
SELECT
您想要的字段来自 projects 并使用相关子查询从每个项目的最新评论中获取文本。
SELECT
p.wonum,
p.description,
p.location,
p.status,
p.owner,
(
SELECT TOP 1 c.Commenttext
FROM comments AS c
WHERE c.wonum = p.wonum
ORDER BY c.commentdt DESC, c.commentid DESC
) AS most_recent_comment
FROM projects AS p;
我不知道 comments 是否允许对同一个 wonum 重复 commentdt .所以我将 c.commentid DESC
添加到 ORDER BY
到服务器作为 TOP 1
的决胜局,以防出现重复。但是如果你对 wonum 和 commentdt 的组合有唯一约束,你可以只使用 ORDER BY c.commentdt DESC
在 comments.wonum 和 comments.commentdt 上添加索引(如果它们尚未编入索引)。