Ниже приведена краткая версия набора данных, над которым я работаю.
ID TYPE DATA SERIES_ID VALIDITY
MOVIE_1 MOVIE MOVIE_DATA_1 NULL 2000-2050
MOVIE_2 MOVIE MOVIE_DATA_2 NULL 2000-2050
SERIES_1 TV_SERIES SERIES_DATA_1 NULL 2000-2050
SERIES_2 TV_SERIES SERIES_DATA_2 NULL 2000-2050
SERIES_3 TV_SERIES SERIES_DATA_3 NULL 2000-2050
EPISODE_1 EPISODE EPISODE_DATA_1 SERIES_1 2000-2050
EPISODE_2 EPISODE EPISODE_DATA_2 SERIES_2 2000-2010
Я хочу написать запрос, который возвращает все документы TYPE = (MOV IE, TV_SERIES), которые действительны (что означает, что текущий год (2020) находится между годами, указанными в VALIDITY). Однако при выборе TV_SERIES он также должен проверить, имеет ли TV_SERIES допустимый EPISODE.
Так что для вышеприведенного набора данных запрос должен возвращать
ID TYPE DATA SERIES_ID VALIDITY
MOVIE_1 MOVIE MOVIE_DATA_1 NULL 2000-2050 (since it is valid)
MOVIE_2 MOVIE MOVIE_DATA_2 NULL 2000-2050 (since it is valid)
SERIES_1 TV_SERIES SERIES_DATA_1 NULL 2000-2050 (since it has EPISODE_1 which is valid)
SERIES_2, НЕ ДОЛЖЕН возвращаться, поскольку его Эпизод (EPISODE_2) недействителен в текущем году
SERIES_3 НЕ ДОЛЖЕН возвращаться, поскольку в нем нет эпизодов.