У меня есть несколько таблиц в базе данных доступа:
ID | LocationName
1 | Location1
2 | Location2
ID | LocationID | Date | NumProductsDelivered
1 | 1 | 12/10 | 3
2 | 1 | 01/11 | 2
3 | 1 | 02/11 | 2
4 | 2 | 11/10 | 1
5 | 2 | 12/10 | 1
ID | LocationID | Date | NumEmployees | EmployeeType
1 | 1 | 12/10 | 10 | 1 (=Permanent)
2 | 1 | 12/10 | 3 | 2 (=Temporary)
3 | 1 | 12/10 | 1 | 3 (=Support)
4 | 2 | 10/10 | 1 | 1
5 | 2 | 11/10 | 2 | 1
6 | 2 | 11/10 | 1 | 2
7 | 2 | 11/10 | 1 | 3
8 | 2 | 12/10 | 2 | 1
9 | 2 | 12/10 | 1 | 3
Что я хочу сделать, это передать LocationID в качестве параметра и получить что-то похожее на следующую таблицу. Итак, если я передам 2 в качестве моего LocationID, я должен получить:
Date | NumProductsDelivered | NumPermanentEmployees | NumSupportEmployees
10/10 | | 1 |
11/10 | 1 | 2 | 1
12/10 | 1 | 2 | 1
Похоже, это должен быть довольно простой запрос. Мне действительно даже не нужна первая таблица, кроме как для заполнения поля со списком в форме, из которой пользователь выбирает место, для которого он хочет получить отчет. К сожалению, все, что я сделал, привело к тому, что я получил намного больше данных, чем я должен был получить. Моя путаница заключается в том, как настроить соединение (предположительно, это то, что я ищу здесь), учитывая, что я хочу, чтобы и date, и locationID были одинаковыми для каждой строки в наборе результатов.
Любая помощь будет высоко ценится.
Спасибо.
EDIT:
Хорошо, ответ ниже не совсем сработал, но он поставил меня на правильный путь, и я смог использовать следующий запрос:
SELECT t1.Date, t2.NumProductsDelivered,
(SELECT t1a.NumEmployees
FROM table3 t1a
WHERE t1a.EmployeeType=1 AND t1a.LocationID=t1.LocationID AND t1a.Date= t1.Date)
AS "PermEmps",
(SELECT t1b.NumEmployees
FROM table3 t1b
WHERE t1b.EmployeeType=3 AND t1b.LocationID=t1.LocationID AND t1b.Date=t1.Date)
AS "SupportEmps"
FROM table3 AS t1 LEFT JOIN table2 AS t2 ON (t2.Date=t1.Date)
AND (t2.LocationID=t1.LocationID)
WHERE t1.LocationID=2
GROUP BY t1.Date, t1.LocationID, t2.NumProductsDelivered;
Это дает мне результаты, которые я искал. Тем не менее, в случае, когда у места есть разрыв между поставляемыми продуктами, я не вижу правильных результатов. Похоже, что набор записей останавливается, как только появляется пустая строка, и никогда больше не восстанавливается. Итак, где я мог бы увидеть это:
Date | NumProductsDelivered | NumPermanentEmployees | NumSupportEmployees
10/10 | | 1 |
11/10 | 1 | 2 | 1
12/10 | 1 | 2 | 1
01/10 | 2 | | 1
06/10 | 1 | |
Я вижу только это:
Date | NumProductsDelivered | NumPermanentEmployees | NumSupportEmployees
10/10 | | 1 |
11/10 | 1 | 2 | 1
12/10 | 1 | 2 | 1
01/10 | 2 | | 1