/ / SQL Access 2007/2010 Вибір максимальної дати з розрізненим ідентифікатором - sql, ms-access-2010, ms-access-2007, maxdate

SQL Access 2007/2010 Вибір максимальної дати з окремим ідентифікатором - sql, ms-access-2010, ms-access-2007, maxdate

Я вважаю, що багато людей вже задали це питання, оскільки я прочитав всю тему звідси. Але проблема полягає в тому, що у мене є 3 пов'язані таблиці замість 2, і я не впевнений, як це кодувати

У мене є таблиця: tbl_Instruments, tbl_Record і tbl_Cal_By. tbl_Instruments має всю інформацію про прилади, включаючи їх ідентифікатор. tbl_Cal_By має інформацію для тих, хто калібрує інструмент. tbl_Records має всі записи інструментів та дату їх калібрування. Він успадковує ідентифікатор від tbl_Instruments як Inst_ID і ім'я від tbl_Cal_By як Ім'я_ABBR.

tbl_Instruments: ідентифікатор, тип

tbl_Cal_By: Cal_ID, Name_ABBR

tbl_Records: Record_ID, Inst_ID, Cal_Date, Name_ABBR

Ось мій код.

SELECT tbl_Records.Inst_ID
,tbl_Instruments.Type
,Max(tbl_Records.Cal_Date) AS MaxOfCal_Date
,tbl_Cal_By.Name_ABBR
FROM tbl_Cal_By
RIGHT JOIN (
tbl_Instruments INNER JOIN tbl_Records ON tbl_Instruments.ID = tbl_Records.Inst_ID
) ON tbl_Cal_By.ID = tbl_Records.BY
GROUP BY tbl_Records.Inst_ID
,tbl_Instruments.Type
,tbl_Cal_By.Name_ABBR;

Бажаний результат:

введіть опис зображення тут

Будь-яка допомога буде оцінена!

Відповіді:

1 для відповіді № 1

Ви можете зробити це кількома методами, один із існуючих:

SELECT tbl_Records.Inst_ID
,tbl_Instruments.Type
,tbl_Records.Cal_Date AS MaxOfCal_Date
,tbl_Cal_By.Name_ABBR
FROM tbl_Cal_By
RIGHT JOIN (
tbl_Instruments INNER JOIN tbl_Records ON tbl_Instruments.ID = tbl_Records.Inst_ID
) ON tbl_Cal_By.ID = tbl_Records.BY
WHERE NOT EXISTS(SELECT 1 FROM tbl_Records t
WHERE t.Inst_ID = tbl_Instruments.ID
AND t.Cal_date > tbl_Records.Cal_Date)

Я не зовсім впевнений у синтаксисі та псевдонімах доступу ... так що, можливо, вам доведеться трохи його налаштувати - як псевдонім перших tbl_records, щоб він розпізнав це, а може, це буде працювати ..