Добрый день, мастера! Суть задачи: есть две таблицы (связь 1:М): Организации (КодЮЛ, Наименование,...) и Профилактические визиты (КодВизита, Объект - поле связи с Организацией, ДатаНачала, Комментарий...). Нужно составить запрос на выборку такого рода: Все организации, независимо от того, были визиты или нет; Если визиты были (а их может быть от 1 до ...), то должны выбираться ПОСЛЕДНИЕ по времени, т.е. с максимальной датой, и указываться соответствующие комментарии, основания и пр. Если визитов не было, остаются пустые поля.
Я составил такой запрос:
[vba]
Код
SELECT Организации.ОГРН, Организации.Наименование, Организации.ЭлПочта, MAX([Профилактические визиты].ДатаНачала) AS [Max-ДатаНачала], [Профилактические визиты].Основание, [Профилактические визиты].Комментарий FROM Организации LEFT JOIN [Профилактические визиты] ON Организации.КодЮЛ = [Профилактические визиты].Объект GROUP BY Организации.ОГРН, Организации.Наименование, Организации.ЭлПочта, [Профилактические визиты].Основание, [Профилактические визиты].Комментарий, Организации.ДатаПрекрДе HAVING (((Организации.ДатаПрекрДе) IS NULL));
[/vba] но он работает неверно. Прошу помочь. Спасибо. Прошу прощения за кросс с киберфорумом, но задача срочная.
Добрый день, мастера! Суть задачи: есть две таблицы (связь 1:М): Организации (КодЮЛ, Наименование,...) и Профилактические визиты (КодВизита, Объект - поле связи с Организацией, ДатаНачала, Комментарий...). Нужно составить запрос на выборку такого рода: Все организации, независимо от того, были визиты или нет; Если визиты были (а их может быть от 1 до ...), то должны выбираться ПОСЛЕДНИЕ по времени, т.е. с максимальной датой, и указываться соответствующие комментарии, основания и пр. Если визитов не было, остаются пустые поля.
Я составил такой запрос:
[vba]
Код
SELECT Организации.ОГРН, Организации.Наименование, Организации.ЭлПочта, MAX([Профилактические визиты].ДатаНачала) AS [Max-ДатаНачала], [Профилактические визиты].Основание, [Профилактические визиты].Комментарий FROM Организации LEFT JOIN [Профилактические визиты] ON Организации.КодЮЛ = [Профилактические визиты].Объект GROUP BY Организации.ОГРН, Организации.Наименование, Организации.ЭлПочта, [Профилактические визиты].Основание, [Профилактические визиты].Комментарий, Организации.ДатаПрекрДе HAVING (((Организации.ДатаПрекрДе) IS NULL));
[/vba] но он работает неверно. Прошу помочь. Спасибо. Прошу прощения за кросс с киберфорумом, но задача срочная.alefkontar
Сообщение отредактировал Serge_007 - Четверг, 24.08.2023, 13:49
Задача решена на киберфоруме. Спасибо. Тему закрывайте. Если кому понадобится, привожу решение: [vba]
Код
SELECT Организации.*, Q.* FROM Организации LEFT JOIN ( SELECT * FROM [Профилактические визиты] AS PV WHERE ДатаНачала = (SELECT MAX(ДатаНачала) FROM [Профилактические визиты] WHERE Объект = PV.Объект) ) AS Q ON Организации.КодЮЛ = Q.Объект WHERE Организации.ДатаПрекрДе IS NULL
[/vba]
Задача решена на киберфоруме. Спасибо. Тему закрывайте. Если кому понадобится, привожу решение: [vba]
Код
SELECT Организации.*, Q.* FROM Организации LEFT JOIN ( SELECT * FROM [Профилактические визиты] AS PV WHERE ДатаНачала = (SELECT MAX(ДатаНачала) FROM [Профилактические визиты] WHERE Объект = PV.Объект) ) AS Q ON Организации.КодЮЛ = Q.Объект WHERE Организации.ДатаПрекрДе IS NULL