我正试图建立一个电子商务网站。在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
我该怎么做?
答案 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