У меня есть таблицы question, topic и question_has_topic (отношение «многие ко многим»). В моем приложении администраторы видят разбивку по вопросам, сгруппированным по темам, и выбирают, сколько из них они хотели бы, чтобы система выбрала случайным образом для создания теста.
Вот такую таблицу они видят:
+-----------------------+---------------------+------------+
| Topics | Questions available | Selection: |
+-----------------------+---------------------+------------+
| health,safety,general | 13 | |
| health | 3 | |
| safety | 7 | |
| general | 1 | |
+-----------------------+---------------------+------------+
Количество уникально для определенной группы тем. В любом случае, после того, как они сделают выбор, мне понадобится оператор SQL, который выберет вопросы, которые соответствуют данной группе тем.
То есть Мне может понадобиться 3 вопроса, в которых есть темы: здоровье, безопасность и общие вопросы.
Я проводил некоторые онлайн-исследования и думаю, что то, что я пытаюсь сделать, называется разделением в реляционной алгебре, и вот моя попытка произвольная группировка топиков:
select questionid from question_has_topic
where not exists (
select questionid from question_has_topic
where topicid not in (8,9,10))
Результат пуст, хотя есть 2 вопроса в базе данных, которые имеют все эти идентификаторы тем, которые говорят мне, что это не работает. Я следовал примеру из этой ссылки