Как получить список путей до учебных материалов, которые используются только в тестах определенного года из базы данных с двумя таблицами – одна содержит записи о тестах, а другая учебные материалы. Намереваюсь создать два набора данных: 1) идентификаторы записей в таблице с учебными материалами и соответствующие пути; 2) уникальные пути из первого набора. После этого планирую удалить записи об учебных материалах из таблицы и их соответствующие файлы с диска.
Как получить список путей до учебных материалов, которые используются только в тестах определенного года из базы данных с двумя таблицами – одна содержит записи о тестах, а другая учебные материалы. Цель - создать два набора данных: 1) идентификаторы записей в таблице с учебными материалами и соответствующие пути; 2) уникальные пути из первого набора. После этого необходимо удалить записи об учебных материалах из таблицы и их соответствующие файлы с диска.
Поскольку id после группировки может быть несколько, то нужно использовать аггрегатные функции для их получения. В данном случае - GROUP_CONCAT() .
Ну или, если очень хочется получить каждый id в отдельной строке, можно обернуть ваш запрос в другой:
select * from test_prep_materials where PATH in ( select tpm.PATH from tests as t left join test_prep_materials as tpm on tpm.TID = t.ID group by tpm.PATH having max(t.YEAR) < 2024 and min(t.YEAR) > 2022 )
P.S. Логичнее, вроде, джойнить тесты к материалам, а не наоборот.