Я вважаю, що багато людей вже задали це питання, оскільки я прочитав всю тему звідси. Але проблема полягає в тому, що у мене є 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, щоб він розпізнав це, а може, це буде працювати ..