首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询,其中person具有每个产品的as请求

SQL查询,其中person具有每个产品的as请求
EN

Stack Overflow用户
提问于 2017-11-19 23:19:47
回答 1查看 33关注 0票数 0

我有一个快捷查询,其中我只计算了产品的总数,并使用count来显示此人已经请求了这么多产品。(共8个产品)

我想知道是否有一种更简单的方法,我不需要自己计算产品的数量,而是让查询来计算。基本上,将8替换为数据库拥有的产品总量。

代码语言:javascript
运行
复制
SELECT DISTINCT 
    Tb_Consumer.Name 
FROM
    Tb_Consumer, Tb_Product, Tb_Requests
WHERE 
    Tb_Consumer.Con_ID = Tb_Requests.Con_ID
    AND Tb_Requests.Prod_ID = Tb_Product.Prod_ID
GROUP BY 
    Tb_Consumer.Name
HAVING 
    COUNT(Tb_Product.Name) = 8
EN

回答 1

Stack Overflow用户

发布于 2017-11-19 23:22:19

使用子查询查找Tb_Product表中的产品数量:

代码语言:javascript
运行
复制
SELECT
    tbc.Name 
FROM Tb_Consumer tbc
INNER JOIN Tb_Request tbr
    ON tbc.Con_ID = tbr.Con_ID
INNER JOIN Tb_Product tbp
    ON tbr.Prod_ID = tbp.Prod_ID
GROUP BY
    tbc.Name
HAVING
    COUNT(tbp.Name) = (SELECT COUNT(*) FROM Tb_Product);   -- count products here

这假设Tb_Product中的每条记录都对应于一个唯一的产品。如果由于某种原因可能有重复,那么你可以计算不同的产品,例如

代码语言:javascript
运行
复制
(SELECT COUNT(DISTINCT Name) FROM Tb_Product)

我所做的其他更改包括从select子句中删除DISTINCT,因为GROUP BY应该已经使每个名称不同。我还重构了您的查询,删除了FROM子句中的逗号。相反,我在三个表之间使用显式连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47378464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档