-2

我有桌子:

a

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

b

id, a_id, vw
 1,    2,  4

我想创建查询来创建这个

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

4

2 回答 2

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在左外连接上放一个过滤器,或者你把它放在它是空的地方

第一个选项:

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
于 2013-07-12T14:07:32.450 回答
2

你在寻找这样的东西吗?

SELECT a.id, SUM(IF(b.a_id IS NULL, 0,b.vw))
FROM a,b
WHERE a.id = b.a_id
于 2013-07-12T14:07:00.847 回答