Нужна помощь в построении SQL-запросов (просто JOIN)

0

В моей базе данных у меня есть "пользователи", "квесты" и таблица "квесты" . Пользователь может решить квест. Решение квеста сохранит "user_id" и "quest_id" в моей таблице "квестов".

Теперь я хочу выбрать все квесты, пользователь НЕ решил (это означает, что для этого пользователя и квеста в таблице "квесты" нет записи)!

Скажем, у пользователя есть идентификатор 14. Как написать этот запрос?

После решения этого запроса я хочу также фильтровать результаты. Квест и пользователь тоже имеют город. Что нужно сделать для написания запроса, который возвращает все квесты, пользователь еще не разрешен в городе пользователей (город пользователя == город квестов)?

Теги:

2 ответа

2
Лучший ответ
SELECT *
  FROM Quests
 WHERE Quest_ID NOT IN (
       SELECT DISTINCT(Quest_ID)
         FROM Questing
        WHERE User_ID = 14)
  • 1
    И откуда вы получаете User_ID? Как я вижу, в таблице квестов нет поля User_ID ...
  • 0
    user_id находится в таблице «Questing».
Показать ещё 3 комментария
2
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 );
  • 0
    благодарю вас! теперь это работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню