我有一个包含以下列的连接表:
target_id
assoc_id
int_attr
它们代表我的目标对象,它的关联对象,以及描述关联的整数属性。
我给了一个散列,其中的键表示关联属性,其值包含与该属性相关联的id。例如:
{
1: [3, 5],
2: [7, 9],
}
我正在尝试开发一个SQL查询,它使用适当的连接表条目查找所有target_ids。在上面的示例中,它将找到具有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有多个嵌套子查询。任何想法或建议将不胜感激。
答案 0 :(得分:0)
我真的没有写过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)