Самое простое решение - написать подзапрос в вашем sql или создать новый запрос в качестве подзапроса (он будет выглядеть как таблица), чтобы помочь указать (или исключить) записи, которые вы хотите видеть.
Использование схожих, но потенциально немного отличающихся исходных данных, которые вы привели только в одном примере.
Table1
| ProductID | Size | Weight | Height |
|-----------|------|--------|--------|
| 1 | 13 | 16 | 9 |
| 2 | 12 | 17 | 12 |
| 3 | 11 | 15 | 15 |
Table2
| TreatmentID | Method | Date |
|-------------|------------|----------|
| 1 | dye blue | 1/2/2016 |
| 2 | dye red | 1/2/2017 |
| 3 | dye blue | 1/2/2018 |
| 4 | dye yellow | 1/4/2017 |
| 5 | dye brown | 1/5/2018 |
Table3
| ProductID | TreatmentID | Success |
|-----------|-------------|---------|
| 1 | 1 | yes |
| 1 | 2 | yes |
| 1 | 3 | no |
| 2 | 4 | no |
| 2 | 5 | yes |
Первым делом нужно получить максимум (даты) и productIds успешных обработок.
Мы сделаем это, агрегировав дату вместе с идентификаторами продуктов и "success".
SELECT Table3.productid, Max(Table2.Date) AS MaxOfdate, Table3.success
FROM Table2 INNER JOIN Table3 ON Table2.treatmentid = Table3.treatmentid
GROUP BY Table3.productid, Table3.success;
Это должно дать нам что-то вроде:
| ProductID | MaxofDate | Success |
|-----------|-----------|---------|
| 1 | 1/2/2018 | No |
| 1 | 1/2/2017 | Yes |
| 2 | 1/4/2017 | No |
| 2 | 1/8/2017 | Yes |
Мысохраню этот запрос как «обычный» запрос.Я назвал мой "Макс", вы, вероятно, должны использовать что-то более описательное.В следующем запросе вы увидите «max».
Далее мы объединим таблицы 1-3, но кроме того, мы также будем использовать этот подзапрос «max» для связи таблиц 1 и 2 по productID и MaxOfDate.to TreatmentDate, где success = "yes", чтобы найти детали самого последнего УСПЕШНОГО обращения.
SELECT table1.productid, table1.size, table1.weight, table1.height, Table2.method
FROM ((table1 INNER JOIN [max] ON table1.productid = max.productid)
INNER JOIN Table2 ON max.MaxOfdate = Table2.date) INNER JOIN Table3 ON
(Table2.treatmentid = Table3.treatmentid) AND (table1.productid = Table3.productid)
WHERE (((max.success)="yes"));
Дизайн будет выглядеть примерно так: Дизайн
(ps. вы можете добавлять запросы в свой редактор запросов дизайна, нажимая на вкладку «Запросы» при добавлении таблиц в свой дизайн запросов. Они действуют так же, как таблицы, но будьте осторожны, поскольку очень подробные запросы имеют тенденцию приводить к сбою Access)
Выполнение этого запроса должно дать нам окончательные результаты.
| ProductID | Size | Weight | Height | Method |
|-----------|------|--------|--------|-----------|
| 1 | 13 | 16 | 9 | dye red |
| 2 | 12 | 17 | 12 | dye brown |