在MySQL查询中需要帮助 - GROUP BY

时间:2012-04-17 02:02:42

标签: mysql sql aggregate-functions

我需要帮助为我的数据库创建查询。

我有两张桌子,

资产,包括(主机名,所有者,工程师,日期,分支)

分支,由(ID,名称,地址,地区)

组成

branch.id是一个主键,它连接到asset.branch,显然是一个外键。

我想创建一个查询,显示分支信息(id,name,address,region)和该分支中的资产数量。

我尝试了这个查询:

SELECT b.id, b.name, b.address, b.xcor, b.ycor, b.status, 
  COUNT(a.hostname) AS noofasset
FROM branch b, asset a 
WHERE a.branch = b.id
GROUP BY b.id;

它一目了然,但未能显示没有资产的分支信息。 我需要一个查询,它还显示有0资产的分支。

1 个答案:

答案 0 :(得分:3)

SELECT b.id, b.name, b.address, b.xcor, b.ycor, b.status, 
  COUNT(a.hostname) AS noofasset
FROM branch b
LEFT JOIN  asset a 
  on a.branch = b.id
GROUP BY b.id, b.name, b.address, b.xcor, b.ycor, b.status

LEFT join表示无论资产是否存在,都包括所有分支。

这个site在视觉上解释左,右外部完整和连接类型..我喜欢它:D

使用您更熟悉的语法(我认为)

SELECT b.id, b.name, b.address, b.xcor, b.ycor, b.status, 
  COUNT(a.hostname) AS noofasset
FROM branch b, asset a 
WHERE a.branch(+) = b.id
GROUP BY b.id;