如何基于与行关联的其他表中的多行的值进行查询

时间:2017-07-22 20:35:57

标签: php mysql

例如我有这些表:

A:

id | something etc.
---|--------------
1  | bla
2  | die
3  | bla

B:

a_id | key | value
-----|-----|
1    | x   | a
1    | y   | b
1    | z   | c
2    | x   | a
2    | z   | d
3    | x   | a
3    | z   | c

如何进行查询,从表A中获取所有具有在表b中链接的id且具有键x和值a以及键z和值c的行 在这个例子中应该产生第1行和第3行。

我真的无法绕过它,任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

select a.*
from a
join 
(
   select a_id
   from b
   group by a_id
   having sum(key = 'x' and value = 'a') > 0
      and sum(key = 'z' and value = 'c') > 0
) b_tmp on b_tmp.a_id = a.id

子查询从表b获取所有相关记录。再加上你的结果吧。