我有一个练习,要求我必须执行以下查询:产品类别的名称(CategoryName)和每个类别的产品总数
我有两张table:- 第一个表称为"Categories",其中包含产品的类别
- 第二个表称为"Products",它包含产品
Categories的主键"Categoryid"与Products共享为一个外键,因此我认为要做的是计算每个id有多少个产品,并在左侧显示名称
由于这两个表不能连接,所以我将留下两个包含这两个表的内容的示例,但不讨论如何计算每个类别的产品数量
- 表格类别:**
| Categoryid | Categoryname ||
| -------- | ------------- ||
| 1 | Beverages ||
| 2 | Condiments ||
| 3 | Confections ||
- 表产品:**
| Productid | Productname | Categoryid ||
| -------- | ------------- | ---------- ||
| 1 | Chai | 1 ||
| 2 | Chang | 1 ||
| 3 | Tofu | 5 ||
- 结果如何:**
| CategoryName | TotalProducts||
| -------- | ----------- ||
| Beverages | 10 ||
| Condiments | 5 ||
| Confections | 3 ||
我不知道如何计算每个类别的产品数量
我尝试这样做:
SELECT Categoryname COUNT(*)
FROM Categories JOIN Products ON Categories.Categoryid=Products.Categoryid;
2条答案
按热度按时间xkrw2x1b1#
看起来像外部连接(这样你就可以显示没有任何产品的类别),计算产品(不是“一般”,因为你会得到错误的结果;我会表明我的意思)。
示例数据(您的数据错误;如果类别5不存在,豆腐就不能放在类别5中外键约束不允许):
查询:计数产品(第14行):
如果你使用
count(*)
(第14行),你会得到错误的结果,因为你会计算类别本身:但是,如果你对没有任何产品的类别不感兴趣,inner join和
count(*)
(以及count(p.productid)
)可以:qfe3c7zg2#
对于每个类别,我列出了所有的产品及其计数。让我知道这是否回答了你的问题。
如果有,请投赞成票并接受答案。如果没有,请添加更多细节并澄清问题。
以后如果您有问题,请像我下面所做的那样提供CREATE表语句。