Добрый день!
Для упрощения вопроса спрошу на примере. Есть база видеоархива: 4 таблицы.
Видеозапись (T_video) находиться на носителе (T_nositel): это кассета или файл (T_type).
Кассет целый зоопарк, для примера всего две.
Нужно вывести все все записи не оцифрованные.
Я пробовал сделать запрос с NOT IN, но знаний моих явно не хватает; выводит всё подряд.
Пока работает с функцией в запросе. Но было бы здорово переписать всё это на sql.
Рабочий вариант: запрос выводит видеозаписи по условию, что в носителях не числится файл.
Запрос с функцией:
SELECT T_video.nameVideo, T_nositel.nameNositel, T_type.nameType
FROM T_video INNER JOIN (T_type INNER JOIN (T_nositel INNER JOIN T_VN ON T_nositel.idNositel = T_VN.idN) ON T_type.idType = T_nositel.typeNositel) ON T_video.idVideo = T_VN.idV
WHERE (((True)=verifyType([idVideo])));
Функция получает id видеозаписи, получает список носителей и если среди них нет id файла (3) выдаёт true.
Текст самой функции. Язык VBA:
Public Function verifyType(ByVal idVideo As Long) As Boolean
Dim qdf As DAO.QueryDef, rs As DAO.Recordset
Set qdf = CurrentDb.QueryDefs("Z_verify")
qdf.Parameters("id").Value = idVideo
With qdf.OpenRecordset(dbOpenSnapshot)
.FindFirst "[typeNositel]=3"
verifyType = .NoMatch
End With
End Function
запрос Z_verify:
SELECT T_nositel.typeNositel
FROM T_video INNER JOIN (T_nositel INNER JOIN T_VN ON T_nositel.idNositel = T_VN.idN) ON T_video.idVideo = T_VN.idV
WHERE (((T_video.idVideo)=[id]));
Помогите с запросом.
База:

Запрос: вывести всё

Искомый вывод, который нужно получить sql запросом:
показать записи только на кассетах