Я пытаюсь обновить базу данных тестирования PAT, которая изначально написана в доступе 2003. Я использую HTML-стиль и подключение ActiveX для получения данных из базы данных доступа. Я новичок в кодировании и в основном нахожу большинство своих ответов через google. В настоящее время я не понимаю, как написать SQL-запрос, который находит последнюю дату тестирования устройства. Информация в базе данных находится в 4 таблицах базы данных. (Извините за форматирование таблиц).Последняя дата в SQL с четырьмя связанными таблицами
Appliance_Details
+-------+------------------+----------+------------+
| PATID | ShortDescription | Location | Department |
+-------+------------------+----------+------------+
| FD110 | 1 | Room 125 | 1 |
| FD113 | 2 | Room 125 | 1 |
| FD114 | 3 | Room 125 | 1 |
+-------+------------------+----------+------------+
Appliance_Description
+--------+----------------+
| Number | AppDescription |
+--------+----------------+
| 1 | Microwave |
| 2 | Food Steamer |
| 3 | Smoothie Maker |
+--------+----------------+
Department_List
+--------+-------------------+
| Number | Department |
+--------+-------------------+
| 1 | Food Technology |
| 2 | Art |
| 3 | Humanities |
+--------+-------------------+
Test_Results
+-------+---------+----------+
| PATID | AppPass | TestDate |
+-------+---------+----------+
| FD110 | Pass | 23/04/15 |
| FD110 | Pass | 04/04/14 |
| FD110 | Pass | 10/04/13 |
| FD113 | Pass | 23/04/15 |
| FD113 | Fail | 04/04/14 |
| FD113 | Pass | 10/04/13 |
| FD114 | Pass | 23/04/15 |
| FD114 | Pass | 04/04/14 |
| FD114 | Pass | 10/04/13 |
+-------+---------+----------+
Запрос SQL У меня есть до сих пор: -
SELECT l.department, d.PATID AS Appliance, AppDescription As Type, Location, AppPass AS Result, TestDate
FROM (Department_List AS l INNER JOIN (Appliance_Description AS a INNER JOIN Appliance_Details AS d ON a.Number = d.ShortDescription) ON l.Number = d.Department) INNER JOIN Test_Results AS t
ON d.PATID = t.PATID
ORDER BY l.department, d.PATID
Что дает результаты
+------------+-------+----------------+----------+--------+----------+
| Department | PATID | Type | Location | Result | TestDate |
+------------+-------+----------------+----------+--------+----------+
| Design | FD110 | Microwave | Room 125 | Pass | 23/04/15 |
| Design | FD110 | Microwave | Room 125 | Pass | 04/04/14 |
| Design | FD110 | Microwave | Room 125 | Pass | 10/04/13 |
| Design | FD113 | Food Steamer | Room 125 | Pass | 23/04/15 |
| Design | FD113 | Food Steamer | Room 125 | Fail | 04/04/14 |
| Design | FD113 | Food Steamer | Room 125 | Pass | 10/04/13 |
| Design | FD114 | Smoothie Maker | Room 125 | Pass | 23/04/15 |
| Design | FD114 | Smoothie Maker | Room 125 | Pass | 04/04/14 |
| Design | FD114 | Smoothie Maker | Room 125 | Pass | 10/04/13 |
+------------+-------+----------------+----------+--------+----------+
То, что я хочу, чтобы SQL-запрос, чтобы сделать, это вернуть последнюю дату. Я знаю, что мне нужно использовать функцию max, и у меня есть этот SQL-запрос, но я не уверен, как присоединиться к этой заявке SQL.
SELECT MAX(t.TestDate) AS LastTestDate, t.PATID FROM Test_Results AS t GROUP BY t.PATID
Это должно дать мне результаты, как показано ниже
+-------------+---------+------------------+------------+----------+-----------------+
| Department | PATID | Type | Location | Result | LastTestDate |
+-------------+---------+------------------+------------+----------+-----------------+
| Design | FD110 | Microwave | Room 125 | Pass | 23/04/15 |
| Design | FD113 | Food Steamer | Room 125 | Pass | 23/04/15 |
| Design | FD114 | Smoothie Maker | Room 125 | Pass | 23/04/15 |
+-------------+---------+------------------+------------+----------+-----------------+
Спасибо, что именно я пытался! Я пытался присоединиться ко второму запросу SELECT. Возможно, я решил переместить MAX (t.TestDate) в SELECT, но я бы никогда не понял, что мне нужно сгруппировать все выбранные элементы. Это натолкнуло меня на последнюю неделю. –