JOIN 2表MySQL查询

时间:2013-07-12 14:05:08

标签: php mysql sql join

我有桌子:

a

id, title, description
1,  test ,  test
2,  test ,  test

b

id, a_id, vw
 1,    2,  4

我想创建查询来创建这个

来自b的 ID ,来自b的 SUM(vw),但是当b a_id 时必须显示vw 0

2 个答案:

答案 0 :(得分:3)

执行左外连接,如下所示:

select a.id, sum(ifnull(b.vw, 0)) 
  from a
  left outer join b on a.id = b.a_id
  group by a.id

如果你想过滤B,请记住你有一个左外连接,所以,你有两个选择,你在左外连接的on上放一个过滤器,或者你把它放在它的位置一个isnull

第一个选项:

select a.id, sum(ifnull(b.vw, 0)) 
  from a
  left outer join b on a.id = b.a_id and b.a_id = {id_user}
  group by a.id

第二个选项:

select a.id, sum(ifnull(b.vw, 0)) 
  from a
    left outer join b on a.id = b.a_id
  where isnull(b.a_id) = 1 or b.a_id = {id_user}
  group by a.id

答案 1 :(得分:2)

你在找这样的东西吗?

SELECT a.id, SUM(IF(b.a_id IS NULL, 0,b.vw))
FROM a,b
WHERE a.id = b.a_id