mysql—按字段分组,然后根据单独表的结果计算出现次数

i2byvkas  于 2021-08-09  发布在  Java
关注(0)|答案(4)|浏览(418)

这很难解释,所以我会添加表格,希望能抓住我打不好的东西。我有一个产品表,每个产品都有一个国家/地区id。我想获得每个国家/地区id的唯一产品的计数。但是,我想加入几个表,以确定是否应该计算sku。
我有 prods 像这样的table
|密钥| c | id | sku|
|

r7xajy2e

r7xajy2e1#

-|--------|-------|
|1 | 1 | 公司|
|2 | 2 | 公司|
|3 | 3 | 公司|
|4 | 1 |定义|
|5 | 2 |定义|
filter 表(在我的代码中,它是几个表的几个内部联接,但目标是生成这样的东西)
|sku |想要| sku|
|-------|

o2gm4chl

o2gm4chl2#

0
定义1

这是我查询的最终结果
|c|#唯一| SKU的c|id#|
|--------|

hmtdttj4

hmtdttj43#

--|
| 1 | 1 |
| 2 | 1 |
| 3 | 0 |
这是我到目前为止拼凑出来的,但它让我的SKU总数减少了。

SELECT 
  prods.c_id,
  COUNT(DISTINCT prods.SKU)
FROM 
  prods
INNER JOIN
  filter
ON filter.sku = prods.sku
WHERE
  filter.want_sku = 1
GROUP BY
  prods.c_id

这只是得到不同SKU的最大值,并将其分配给每个不同的c#U id。不太清楚如何修复它。任何帮助/建议将不胜感激,谢谢!

8hhllhi2

8hhllhi24#

我想你想要一个 left join :

SELECT p.c_id,
       COUNT(DISTINCT f.SKU)
FROM prods p LEFT JOIN
     filter f
     ON f.sku = p.sku AND
        f.want_sku = 1
GROUP BY p.c_id;

注:我认为你不需要 COUNT(DISTINCT) 但你就是这么说的。

相关问题