В моей базе данных у меня есть "пользователи", "квесты" и таблица "квесты" . Пользователь может решить квест. Решение квеста сохранит "user_id" и "quest_id" в моей таблице "квестов".
Теперь я хочу выбрать все квесты, пользователь НЕ решил (это означает, что для этого пользователя и квеста в таблице "квесты" нет записи)!
Скажем, у пользователя есть идентификатор 14. Как написать этот запрос?
После решения этого запроса я хочу также фильтровать результаты. Квест и пользователь тоже имеют город. Что нужно сделать для написания запроса, который возвращает все квесты, пользователь еще не разрешен в городе пользователей (город пользователя == город квестов)?
SELECT *
FROM Quests
WHERE Quest_ID NOT IN (
SELECT DISTINCT(Quest_ID)
FROM Questing
WHERE User_ID = 14)
select * from quests q, users u
where u.id = 14 AND q.city=u.city AND
q.id not in ( select DISTINCT(quest_id) from questing );