У меня есть две связанные таблицы следующим образом:
ПОЛЬЗОВАТЕЛИ
user_id <\ PK>
ИСПОЛЬЗОВАНИЕ
user_action_id <\ PK>
user_id <\ FK>
user_action <\ int>
Всякий раз, когда пользователь выполняет действие, существует новая вставка в таблицу "useractions" Мне нужен запрос для получения тех строк USERACTION, где пользователь выполнил только определенный набор действий, скажем (1,2), но не (3,4). Поэтому у меня есть запрос типа -
select * from USERACTIONS where (1,2) in(select user_action from USERACTIONS where user_id=100) and user_id=100;
Проблема в том, что приведенный выше запрос не работает, так как supplying (1,2) ожидает, что подзапрос также вернет два столбца, что понятно. Это ошибка, которую я получаю -
ОШИБКА: подзапрос имеет слишком мало столбцов
Предоставление одного значения скажем (1) или (2) работает отлично. Я хочу знать, есть ли способ использовать тот же запрос и сравнить результат подзапроса с несколькими значениями? Я предпочитаю тот же запрос, потому что продемонстрированный здесь случай является лишь частью большого запроса.
Обратите внимание, что в запросе не должны быть перечислены пользователи, которые выполнили (1,2,3,4), должны быть перечислены те, кто выполнил только (1,2), а значения user_action могут быть любым случайным целым числом.
Любые альтернативные запросы приветствуются, но предпочитают изменения в том же запросе. Заранее спасибо.