好吧,已经很晚了,所以这可能是显而易见的,但我遇到了一些麻烦。
我有两张桌子。
Filter
-
id
catId
value
所有值都应该是唯一的,以便此查询获得所有值及其“id”
select value as prodVal, id
from Filter
where catId = 7 group by prodVal
该查询返回以下内容...
id = 82, value = 'filter1'
id = 92, value = 'filter2'
etc.. etc...
然后,我需要获取“id”列表,并在第二个表中处理它,即
prodFilters
-
id
filterId
productId
因此,我需要计算在前面的查询中拉出的每个"ID“在"prodFilters”中出现了多少次"FilterID“...
FOREACH (来自上一个查询的id)执行此操作...
select count(*) from prodFilters
where filterId = {value from last query}
group by filterId
有没有办法通过一个查询来完成这一切,而不是先运行第一个查询,然后再运行多个查询?
任何帮助都是非常感谢的。
发布于 2012-01-02 10:08:39
您应该能够使用IN
子句
SELECT filterid, COUNT(*)
FROM prodfilters
WHERE filterid IN (SELECT id
from Filter
WHERE catid = 7
group by prodVal)
GROUP BY filterid
发布于 2012-01-02 10:09:00
试试这个:
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
发布于 2012-01-02 10:08:18
你在找这样的东西吗?
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
https://stackoverflow.com/questions/8699485
复制