对联接表上具有特定项的对象的SQL查询

对联接表上具有特定项的对象的SQL查询,sql,inner-join,jointable,Sql,Inner Join,Jointable,我有一个包含以下列的联接表: target_id assoc_id int_attr 它们表示我的目标对象、其关联对象和描述关联的整数属性 我得到了一个散列,其中包含表示关联属性的键和包含与该属性关联的id的值。例如: { 1: [3, 5], 2: [7, 9], } 我正在尝试开发一个SQL查询,该查询将查找具有适当联接表项的所有目标ID。在上面的示例中,它将找到具有4个条目的任何目标对象: `targets_assocs` target_id assoc_id int_attr

我有一个包含以下列的联接表:

target_id
assoc_id
int_attr
它们表示我的目标对象、其关联对象和描述关联的整数属性

我得到了一个散列,其中包含表示关联属性的键和包含与该属性关联的id的值。例如:

{
  1: [3, 5],
  2: [7, 9],
}
我正在尝试开发一个SQL查询,该查询将查找具有适当联接表项的所有目标ID。在上面的示例中,它将找到具有4个条目的任何目标对象:

`targets_assocs`
target_id assoc_id int_attr
X         3        1
X         5        1
X         7        2
X         9        2
A         3        1
A         5        1
A         7        2
A         9        2
C         2        1
C         4        1
C         6        2
C         8        2
在本例中,它将返回X和A,忽略C


我试图使用某种类型的HAVING子句。我试图避免使用IF EXISTS创建多个嵌套子查询。如果您有任何想法或建议,我们将不胜感激。

我真的没有写MySQL的请求,很抱歉输入错误

SELECT `target_id` FROM (
   SELECT `target_id`, count(*) FROM (
      SELECT `targets`.`target_id`, `targets_assocs`.`int_attr` FROM `targets`
       INNER JOIN `targets_assocs` ON `targets_assocs`.`target_id` = `targets`.`id`
       GROUP BY `targets`.`target_id`, `targets_assocs`.`int_attr`
   ) 
   GROUP BY `target_id`
   HAVING COUNT(*) = 2)

谢谢你的帮助,但我想也许我的问题措辞不好,我更新了它以获得更多的澄清。再次感谢你的时间。通过将WHERE子句添加到最内部的SELECT语句中,我能够在有限数量的SELECT语句中完成我想要的任务。非常感谢。