对联接表上具有特定项的对象的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语句中完成我想要的任务。非常感谢。