SQL - 连接两个表并计算项目

tim*_*tim 12 sql

好吧,我正在尝试查看每个供应商提供的产品数量(产品和供应商是单独的表格).我希望结果显示公司名称和公司可用的产品数量.我不确定如何设置它.

到目前为止,我有:

SELECT CompanyName, Count(ProductName) FROM Suppliers 
left join Products on Suppliers.SupplierID = Products.SupplierID;
Run Code Online (Sandbox Code Playgroud)

我不确定如何使ProductName计数特定于每个公司.我会永远感激你能提供给我的任何帮助.

Jon*_*ler 17

您缺少的只是GROUP BY子句:

SELECT CompanyName, Count(ProductName)
  FROM Suppliers LEFT JOIN Products
    ON Suppliers.SupplierID = Products.SupplierID
 GROUP BY CompanyName;
Run Code Online (Sandbox Code Playgroud)

使用LEFT {OUTER} JOIN意味着如果有供应商不提供任何产品,则连接将为与Products表对应的列返回一组NULL值.然后,COUNT(ProductName)只计算非空值的数量,从而为不提供产品的公司产生答案0.通常情况下,您会使用常规的INNER JOIN,然后您就不会看到那些没有提供产品的公司.