我需要帮助为我的数据库创建查询。
我有两张桌子,
资产,包括(主机名,所有者,工程师,日期,分支)
分支,由(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资产的分支。
答案 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;