У меня есть 3 таблицы - Users
, Images
и Users_Images
.
Каждый пользователь может купить много изображений, и каждое изображение может быть куплено несколькими пользователями.
Поля таблиц следующие:
Users - Id, UserName, Password
Images - Id, Name, Description, Path
Users_Images - UserId, ImageId, PurchaseDate
.
(Все отношения между таблицами установлены)
Я пытаюсь создать запрос, который выберет таблицу со всеми изображениями, которые не были куплены конкретным пользователем
Мой алгоритм состоял в том, чтобы выбрать таблицу со всем изображением, которое было куплено конкретным пользователем, и вычесть его из полной таблицы изображения.
Но независимо от того, как я пытался написать это как запрос, он всегда давал мне неправильные или не полные результаты.
Некоторые из запросов, которые я пробовал:
SELECT Id, [Name], Description, Path
FROM Images
EXCEPT
SELECT Id, [Name], Description, Path
FROM Images AS I INNER JOIN Users_Images AS UI
ON I.Id = UI.ImageId
WHERE UserId = 1
OR
SELECT Id, [Name], Description, Path
FROM Images
WHERE NOT EXISTS (
SELECT Id, [Name], Description, Path
FROM Images AS I INNER JOIN Users_Images AS UI
ON I.Id = UI.ImageId
WHERE UserId = 1)
Я также искал решение здесь и на других сайтах, но ни один из них не работал.