我需要帮助为我的数据库创建查询。
我有两张桌子,
资产,包括(主机名、所有者、工程师、日期、分支)
分支机构,包括(id、名称、地址、地区)
branch.id是连接到asset.branch的主键,而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的分支。
最佳答案
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
LealEngin表示,不管资产是否存在,都包含所有分支。
这个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;