У меня есть SQL Server таблицы JobFiles со столбцами JobId и FileId. Эта таблица отображает, какой файл принадлежит какому заданию. Каждое задание может «содержать» один или несколько файлов, и каждый файл может «содержаться» в одном или нескольких заданиях. Для каждой пары, в которой задание M содержит файл N, в таблице есть строка (M, N).
Я начинаю с идентификатора задания, и мне нужно получить список всех файлов, чтобы они принадлежали только этому заданию. Мне трудно написать запрос на это. До сих пор я создал следующее (псевдокод):
SELECT FileId FROM JobFiles WHERE JobId=JobIdICareAbout AND NOT EXISTS
(SELECT * FROM JobFiles WHERE FileId=ThatSameFileId AND JobId<>JobIdICareAbout);
Я верю, что вышеприведенное сработает, но у меня есть проблема с отображением ThatSameFileId
на FileId
, возвращаемое из внешнего SELECT
, чтобы база данных знала, что они одинаковы.
Как мне это сделать? Как мне сказать базе данных, что FileId
во внешнем SELECT
должен быть равен FileId
во внутреннем SELECT
?