具有连接表上特定条目的对象的SQL查询

时间:2013-11-23 18:07:13

标签: sql inner-join jointable

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

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有多个嵌套子查询。任何想法或建议将不胜感激。

1 个答案:

答案 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)