#sql-server #database
#sql-сервер #База данных
Вопрос:
У меня есть две таблицы в базе данных
1- Файловая таблица: поля:
- File_ID
- Имя файла
2-Пользовательская таблица:
- Идентификатор пользователя
- Имя пользователя
Теперь у меня есть 3-я таблица, которая является «Назначенным файлом», которая отслеживает, какой файл назначен каким пользователям.
Поля:
- File_ID
- Идентификатор пользователя
- Дата
Я хочу получить все не связанные записи, т. Е. Получить всех пользователей, которые не назначены определенному файлу.
Вот мой запрос для связанных записей.
выберите * от пользователя, которого я подключаю к FileRequested r на i.userId= r.userId где r.File_ID = 1175
Теперь я хочу получить всех пользователей, которые не назначены этому файлу
Проблема: один файл может быть назначен нескольким пользователям. Я попытался выполнить следующий запрос, но это не сработало
выберите * от пользователя, которого я подключаю к FileRequested r на i.userId= r.userId где r.File_ID != 1175 или r.File_ID равно нулю
Ответ №1:
Вы могли бы использовать NOT IN
с подзапросом, если я правильно понимаю:
SELECT *
FROM User i
WHERE i.UserID NOT IN (SELECT UserID
FROM FileAssigned
WHERE File_ID = 1175)
Ответ №2:
SELECT * From Users as a
Where not exists(select 1
from FileAssigned as b
Where b.UserID=a.UserID)