努力寻找合适的答案,希望有人可以提供帮助。它可能很简单,我忽略了一些明显的东西,使它比我应该更难。 我有两个表 - 标题[包括titleIDs和titleNames],以及组[包括与其关联的标题ID的groupID]。 titleID可以附加许多groupID。
我正在尝试编写一个查询,它会返回与已选择的groupID条件匹配的TitleID结果。
所以我试过
SELECT * FROM titles INNER JOIN groups ON titles.titleID = groups.titleID WHERE
groups.groupID = 6 AND
groups.groupID = 24 AND
groups.groupID = 53
所以我想返回仅与所有这些组IDS相关联的标题的结果。 这些数字实际上会被某人从几个复选框中选择的内容所取代,但是为了这个例子的目的,他们已经对它们进行了硬编码。
我尝试了一个子查询,但我无法让它工作,我相信Subs可以减慢速度,我已经开始处理大量数据了。
计划是让某人从列表中选择一个或多个groupID,然后仅返回与所选的所有GroupsID相关联的标题的结果。
任何关于此的指示,线索和建议都会非常受欢迎。 感谢
答案 0 :(得分:1)
您可以使用in()
作为组ID并匹配foreach标题的不同组的计数,如果提供了3个组ID,则每个标题组的计数必须为3,因此具有这3个标题的标题小组将被退回
SELECT * FROM titles t
INNER JOIN groups g ON t.titleID = g.titleID
WHERE g.groupID IN(6,24,53)
GROUP BY t.titleID
HAVING COUNT(DISTINCT g.groupID) = 3