我有表格问题,主题和question_has_topic(多对多关系)。在我的应用程序管理员中,查看按主题分组的问题的细目,并选择他们希望系统随机选择以创建测试的人数。
这是他们看到的那种表:根据所有符合条件进行选择(关系部门)
+-----------------------+---------------------+------------+ | Topics | Questions available | Selection: | +-----------------------+---------------------+------------+ | health,safety,general | 13 | | | health | 3 | | | safety | 7 | | | general | 1 | | +-----------------------+---------------------+------------+
计数为主题的具体分组是独一无二的。无论如何,一旦他们做出选择,我需要一个SQL语句来选择与给定的主题分组相对应的问题。 也就是说我可能需要3个题目健康,安全和一般的问题。
我在网上做了一些研究,我认为,我试图做的是被称为关系代数鸿沟,这是我的topicids的任意分组尝试:
select questionid from question_has_topic where not exists ( select questionid from question_has_topic where topicid not in (8,9,10))
结果是空的,但数据库中有2个问题,它们都包含所有这些主题ID,这些主题ID告诉我这是行不通的。我下面从这个link
我不明白这个问题。你可以改述 – Luke101 2012-02-20 02:51:30
另请参阅此问题与超过10种方式来查找结果:[如何过滤SQL结果中的一个通过多关系](http://stackoverflow.com/questions/7364969/how-to- filter-sql-results-in-a-many-through-relation)以及性能测试(针对Postgres,而不是MySQL)。 – 2012-02-20 07:18:42