Я пытаюсь получить из двух таблиц, связанных один ко многим (Subattivita.ID-Eventi-IDSubattivita), некоторые поля из первой таблицы и два других поля из второй таблицы (последний Eventi.Evento и первый Eventi.DataInserimento).
Я не знаю, почему я получаю сообщение об ошибке при следующем запросе SQL. Может кто-нибудь помочь, пожалуйста?
Первая таблица: Субаттивита
Вторая таблица: Эвенти
Требуемые результаты запроса:
Я попробовал выполнить следующий SQL-запрос, но Access просит ввести значение u.Evento:
SELECT
t.ID,
u.Evento as LastEvento,
p.DataInserimento as FirstDataInserimento
FROM
((Subattivita t
INNER JOIN
(SELECT IDSubattivita, MAX(ID) as MaxID FROM Eventi GROUP BY IDSubattivita) u ON t.ID = u.IDSubattivita)
INNER JOIN
(SELECT IDSubattivita, MIN(ID) as MinID FROM Eventi GROUP BY IDSubattivita) p ON t.ID = p.IDSubattivita);
КАКУЮ ошибку вы получаете? Я сразу вижу, что ваша таблица p
не содержит поля DataInserimento
, а ваша таблица u
не содержит поля Evento
. Оба они содержат только два столбца.
Я внес некоторые изменения и добавил сообщение о доступе.
Это не сообщение об ошибке. Это запрос на ввод значения, поскольку запрос ссылается на поля, отсутствующие в наборе данных, как отметил @TimRoberts. Похоже, вам нужен Min(DataInserimento) для каждого IDSubattivita. Вытащить Evento, связанное с максимальным ID для каждого IDSubattivita, сложнее. Учитывать:
SELECT Q.IDSubattivita, Evento AS LastEvento, FirstDataInserimento FROM Eventi INNER JOIN
(SELECT Eventi.IDSubattivita, Max(Eventi.ID) AS EID,
Min(Eventi.DataInserimento) AS FirstDataInserimento FROM Eventi
GROUP BY Eventi.IDSubattivita) AS Q
ON Eventi.ID=Q.EID;
Или эта версия:
SELECT Subattivita.ID, Contenuto,
(SELECT TOP 1 Evento FROM Eventi AS Dup
WHERE IDSubattivita=Subattivita.ID ORDER BY ID DESC) AS LastEvento,
(SELECT TOP 1 DataInserimento FROM Eventi AS Dup WHERE
IDSubattivita=Subattivita.ID ORDER BY ID) AS FirstDataInserimento
FROM Subattivita;
Привет, 7 июня, мы очень ценим вашу помощь (дважды ответы на два вопроса!). Теперь это кажется таким простым и очевидным, но я не смог найти правильный SQL-запрос.
(Я предпочитаю второй вариант) Спасибо!
Если вы получили ошибку, поделитесь этой ошибкой.