Count和GroupBy之后的SQL Server内连接

时间:2014-12-06 20:27:04

标签: sql sql-server tsql

我正试图建立一个电子商务网站。在ProductCategory页面,我必须列出Companies所包含的Products列表。

我有一个Product表,其中包含:

ProductID
ProductName
...
MarkID

我有一个Company表,其中包含:

CompanyID
CompanyName

我想在查询中混合它们。

在该代码块之后,

SELECT 
   CompanyID, 
   count(CompanyID) as CompanyCount
FROM 
   Products 
GROUP by 
   CompanyID

我得到了这个结果:

CompanyID   CompanyCount
-------------------------
  1               2
  3               1
  4               4

之后我只想与CompanyName

进行内部联接

想得到这样的结果:

CompanyName CompanyCount
---------------------------
   1               2
   3               1
   4               4

我该怎么做?

3 个答案:

答案 0 :(得分:4)

使用子查询:

SELECT * FROM 
(
    SELECT CompanyID, count(CompanyID) as CompanyCount
    FROM Products 
    GROUP by CompanyID
) CompanyCounts
INNER JOIN Companies
on CompanyCounts.CompanyId = Companies.CompanyID

如果您需要更多地方,可能需要创建一个公司计数视图。

答案 1 :(得分:1)

这可以在没有子查询的情况下实现。

SELECT C.CompanyID, C.CompanyName, COUNT(*)
FROM Products P INNER JOIN Companies C ON P.CompanyId = C.CompanyID
GROUP BY C.CompanyID, C.CompanyName

答案 2 :(得分:0)

您可以使用第一个选择作为子查询加入公司表:

SELECT C.CompanyName, Q1.CompanyCount FROM Companies C JOIN ( SELECT CompanyID, count(CompanyID) as CompanyCount FROM Products GROUP by CompanyID ) Q1 ON Q1.CompanyID = C.CompanyId