如何解决使用SQL的JOIN列出和计数项目
我正在尝试从以下两个表中建立基本的融洽关系:
餐桌产品
|--------|----------------|----------|
| PRO_Id | PRO_CategoryId | PRO_Name |
|--------|----------------|----------|
| 1 | 98 | Banana |
| 2 | 98 | Apple |
|--------|----------------|----------|
表格类别
|--------|----------|
| CAT_Id | CAT_Name |
|--------|----------|
| 98 | Fruits |
| 99 | Other |
|--------|----------|
我需要的是以下输出:
|------------|
| Categories |
|------------|
| Fruits (2) |
|------------|
我想要一份报告,列出Categories
的所有类别,但仅当Products
的产品具有链接(“水果”是个案形式,而“其他”则不是)。
这实际上是我所在的地方
SELECT CAT_Name,COUNT(PRO_Name IN sum)
FROM Categories
JOIN Products
ON Products.PRO_CategoryId = Categories.CAT_Id as sum
ORDER BY CAT_Name ASC
有人帮助我吗?
谢谢。
解决方法
您非常接近。您需要摆脱查询中的垃圾并使用group by
:
SELECT c.cat_name,COUNT(*)
FROM Categories c JOIN
Products p
ON p.PRO_CategoryId = c.CAT_Id
GROUP BY c.CAT_Name ;
注意:
-
SELECT *
不适合用于聚合查询。您要选择的是。 - 这将计数放在单独的列中,尽管有抽样结果,但这似乎是您的意图。
-
COUNT(pro_name in sum)
没有道理。 -
as sum
没有道理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。