1

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

我有2张桌子,

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

由 (id, name, address, region) 组成的分支

branch.id 是连接到asset.branch 的主键,显然是外键。

我想创建一个查询来显示分支信息(id、名称、地址、区域)和该分支中的资产数量。

我试过这个查询:

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 资产的分支。

4

1 回答 1

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

左连接表示包括所有分支,无论资产是否存在。

这个网站在视觉上解释了左、右外全和连接类型。我喜欢它: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;
于 2012-04-17T02:05:27.253 回答