在此先感谢您提供的任何帮助,我是 MS SQL 的新手,我想做一些我认为可以实现但不知道如何做的事情。
我有一个名为“suppliers”的简单表,我可以在其中执行(SELECT id,name FROM providers ORDER BY id ASC)
ID | 姓名 |
---|---|
1 | ACME |
2 | 第一站商业用品 |
3 | 一站式供应仓库 |
4 | 农场第一供应 |
我有另一个名为“产品”的表
ID | 姓名 | 供应商 ID |
---|---|---|
1 | 项目 1 | 2 |
2 | 第 2 项 | 1 |
3 | 第 3 项 | 1 |
4 | 第 4 项 | 3 |
5 | 第 5 项 | 2 |
如果在同一行有意义,我想列出所有供应商并获取每个供应商的产品总量?我只是不确定如何通过查询传递suppliers.id 来获取计数。
我希望能做到这一点:
ID | 姓名 | total_products |
---|---|---|
1 | ACME | 2 |
2 | 第一站商业用品 | 2 |
3 | 一站式供应仓库 | 1 |
4 | 农场第一供应 | 0 |
我真的很感激这方面的任何帮助。
这里要掌握三个概念。Left Join
, group by
, 和Count()
.
select s.id, s.name, Count(*) as total_products
from suppliers s
left join products p on s.id=p.supplier_id --the left join gets your no matches
group by s.id, s.name
左连接是一种连接,其中保留第一个表中的所有值,即使第二个表中没有匹配项。
Group by是一种聚合工具,用于输入要聚合的列。
Count()只是分组列的事务计数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句