首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >分组计数值(使用MySQL by?)基于2个表

分组计数值(使用MySQL by?)基于2个表
EN

Stack Overflow用户
提问于 2012-01-02 17:58:20
回答 8查看 650关注 0票数 1

好吧,已经很晚了,所以这可能是显而易见的,但我遇到了一些麻烦。

我有两张桌子。

代码语言:javascript
代码运行次数:0
运行
复制
Filter
-

id
catId
value

所有值都应该是唯一的,以便此查询获得所有值及其“id”

代码语言:javascript
代码运行次数:0
运行
复制
select value as prodVal, id 
from Filter 
where catId = 7 group by prodVal

该查询返回以下内容...

代码语言:javascript
代码运行次数:0
运行
复制
id = 82, value = 'filter1'
id = 92, value = 'filter2'
etc.. etc... 

然后,我需要获取“id”列表,并在第二个表中处理它,即

代码语言:javascript
代码运行次数:0
运行
复制
prodFilters
-
id
filterId
productId

因此,我需要计算在前面的查询中拉出的每个"ID“在"prodFilters”中出现了多少次"FilterID“...

FOREACH (来自上一个查询的id)执行此操作...

代码语言:javascript
代码运行次数:0
运行
复制
select count(*) from prodFilters 
where filterId = {value from last query} 
group by filterId

有没有办法通过一个查询来完成这一切,而不是先运行第一个查询,然后再运行多个查询?

任何帮助都是非常感谢的。

EN

回答 8

Stack Overflow用户

发布于 2012-01-02 18:08:39

您应该能够使用IN子句

代码语言:javascript
代码运行次数:0
运行
复制
SELECT filterid, COUNT(*)
FROM   prodfilters
WHERE  filterid IN (SELECT id 
                    from Filter 
                    WHERE  catid = 7 
                    group by prodVal)
GROUP  BY filterid 
票数 3
EN

Stack Overflow用户

发布于 2012-01-02 18:09:00

试试这个:

代码语言:javascript
代码运行次数:0
运行
复制
Select f.value as prodVal, f.id,  Count(pf.filterId) as 'Filter Count'
From Filter f
inner join prodFilters pf on f.id = pf.filterId
where f.catId = 7 
group by pf.filterId
票数 2
EN

Stack Overflow用户

发布于 2012-01-02 18:08:18

你在找这样的东西吗?

代码语言:javascript
代码运行次数:0
运行
复制
select Filter.value as prodVal, Filter.id , count(filterId) from prodFilters, Filter where filterId IN (select id from Filter where catId = 7) group by filterId
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8699485

复制
相关文章

相似问题

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