[英]MySQL Count Values (using group by?) based on 2 tables
好的,太晚了,所以這也許很明顯,但是我遇到了一些麻煩。
我有2張桌子。
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
有什么方法可以通過一個查詢來完成所有工作,而不是先運行第一個查詢,然后再運行多個查詢?
任何幫助深表感謝。
您應該可以使用IN
子句
SELECT filterid, COUNT(*)
FROM prodfilters
WHERE filterid IN (SELECT id
from Filter
WHERE catid = 7
group by prodVal)
GROUP BY filterid
嘗試這個:
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
您是否正在尋找這樣的東西?
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
select count(filterid)
from prodfilters where id in (select value as prodVal, id
from Filter
where catId = 7 group by prodVal) as temp
group by id
SELECT catId, COUNT(*)
FROM prodFilters
WHERE catId IN (SELECT id from Filter
WHERE catId = 1 )
GROUP BY catId
select count(p.id) , p.filderId from prodFilters as p , filter as f
where p.filterId = f.id and f.catId = 7
group by p.filterId
我認為這會起作用,因為每個catId,值都是唯一字段
您可以使用像
With A as {
select value as prodVal, id
from Filter
where catId = 7 group by prodVal
}
select count(*) from prodFilters
where filterId in {A.id}
group by filterId
這在oracle中工作正常,但不確定MySQL
MySQL的:
SELECT COUNT (*)
FROM prodfilters t
JOIN
(SELECT VALUE AS prodval, ID
FROM filter
WHERE catid = 7
GROUP BY prodval) ta ON ta.ID = t.filterid
GROUP BY filterid
您可以使用此查詢
select COUNT(*) from filter as f left outer join prodFilter as p on f.Id = p.filterId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.