使用MS Access在连接表中仅返回一行

时间:2009-07-21 14:36:38

标签: sql ms-access join max

我知道那里有类似的帖子,但是当我尝试在我自己的查询中使用其中任何一个时,我都无法让它发挥作用。

基本上,我想在ACCESS中使用SQL视图查询3个表。

最初虽然并且对于这个例子我只想用2来做。

tb1名称: 任务

需要tb1字段: 任务ID 任务标题 项目ID(这用于在最后获取项目标题,即上面提到的第3个表格)

tb2名称: 任务说明

需要tb2字段: 任务说明ID 任务说明日期 任务说明

使用设计视图发生的事情是,如果有关于Tasks表中的一个任务的3个注释,它列出了所有3个任务注释。

我想要做的是,只显示最后输入的任务记录,无论是[任务记录ID]还是[任务记录日期]。

我现在剩下的,从这里得到的帮助构建的是以下SQL语句:

SELECT 

t.[Task ID], 
t.[Task Title], 
t.[Project ID],
tn.*

FROM
Tasks t

INNER JOIN [Task Notes] tn ON t.[Task ID] = tn.[Task ID]

WHERE tn.[Task ID] = 
  (SELECT max(tn.[Task Note Date]) FROM tn where tn[Task ID] = t.[Task ID])
;

我收到了一个语法错误,但之前的版本也让我陷入困境。

我通常在ACCESS之外开发,在php / asp中它很好,但在ACCESS中我是新手。

非常感谢任何帮助

干杯

马修

2 个答案:

答案 0 :(得分:1)

尝试这样的事情

SELECT t.[Task ID], 
       t.[Task Title], 
       t.[Project ID],
       tn.*    
  FROM Tasks t 
       INNER JOIN
       (
          SELECT [Task ID], 
                 MAX([Task Note Date]) MaxDate
            FROM [Task Notes] 
           GROUP 
              BY [Task ID]
       ) TaskNoteIDS 
          ON t.[Task ID] = TaskNoteIDS.[Task ID] 
       INNER JOIN [Task Notes] tn 
          ON TaskNoteIDS.[Task ID] = tn.[Task ID]
             AND TaskNoteIDS.MaxDate = [Task Notes].[Task Note Date];

答案 1 :(得分:0)

尝试:

FROM tasks AS t
FROM [other table] AS tn

这是MS Access中的“SQL风味变体”......