Возвращение только одной строки в объединенную таблицу с помощью MS Access - PullRequest
0 голосов
/ 21 июля 2009

Я знаю, что есть похожие публикации, но когда я попытался использовать любую из них в своем запросе, я не могу заставить ее работать.

В основном у меня есть 3 таблицы, которые я хочу запросить в ACCESS, используя представление SQL.

Первоначально, хотя и для этого примера я пытаюсь сделать это только с 2.

имя tb1: Задачи

желательных полей tb1: Идентификатор задачи Название задачи Идентификатор проекта (используется для получения заголовка проекта в конце, т. Е. Третьей таблицы, как указано выше)

имя tb2: Примечания к заданию

поля tb2 требуются: Идентификатор задачи Дата примечания к задаче Задание

То, что происходило с использованием представления проекта, заключалось в том, что если в таблице «Задачи» было 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 ]

1 голос
/ 21 июля 2009

Попробуйте что-то вроде этого

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];
0 голосов
/ 21 июля 2009

Попробуйте:

FROM tasks AS t
FROM [other table] AS tn

Это "вариант SQL", найденный в MS Access ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...