可能很难解释我的意思,如果问题含糊不清,请道歉。
我有一个表格,可以使用ID
将产品与关键字相关联所以我可能有与关键字ID 14相关联的产品ID 2,3,4,5 和与关键字ID 15相关联的产品ID 3,6,9
我的问题是如何统计和存储与关键字14相关联的ID以及与关键字15相关的ID等等(总是添加新关键字)?
到目前为止我的SQL:
select products_keyword_categories.key_cat_name
from products_keyword_to_product
inner join products_keyword_categories
on products_keyword_categories.key_cat_id = products_keyword_to_product.key_cat_id
group by products_keyword_categories.key_cat_name
非常感谢任何建议。此外,如果有任何术语可以帮助我通过谷歌搜索进一步研究,这也是最受欢迎的。
编辑添加:在上面的示例中,包含关联的表是products_keyword_to_product - 我在内部加入另一个表以返回关键字名称。
编辑添加(2):抱歉,我担心我的问题会模糊不清。 如果我想使用关键字ID 14计算所有产品,我会使用COUNT()AS - 如答案中所述,但我还需要使用关键字ID 15和关键字ID 16等计算产品数量。 - 希望这样做更有意义。
答案 0 :(得分:3)
select key_cat_name ,count(*)
from products_keyword_categories pkc
inner join products_keyword_to_product ptk on pkc.id=ptk.key_id
group by id;
答案 1 :(得分:1)
select cat.key_cat_name, count(*) from
products_keyword_categories cat inner join products_keyword_to_product prod
on prod.key_cat_id=cat.key_cat_id
group by cat.key_cat_name
修改强>
select cat.key_cat_name, prod_assoc.product_id, count(*) from
products_keyword_categories cat inner join products_keyword_to_product prod_assoc
on prod_assoc.key_cat_id=cat.key_cat_id
group by cat.key_cat_name,prod_assoc.product_id
假设您的表格结构如下:
<强> products_keyword_categories 强>
key_cat_id key_cat_name
1 Electronics
2 Toys
3 Software
<强> products_keyword_to_product 强>
key_cat_id product_id
1 1
2 1
3 2
1 2
<强>产品强>
product_id name
1 Product A
2 Robot
编辑2:
试试这个
SELECT key_cat_name, product_id, COUNT(*)
FROM
(select cat.key_cat_name, prod_assoc.product_id from
products_keyword_categories cat inner join products_keyword_to_product prod_assoc
on prod_assoc.key_cat_id=cat.key_cat_id) as tbl
GROUP BY key_cat_name, product_id
编辑3:
上面的查询由两部分组成:
内在部分:
(select cat.key_cat_name, prod_assoc.product_id from
products_keyword_categories cat inner join products_keyword_to_product prod_assoc
on prod_assoc.key_cat_id=cat.key_cat_id)
每个product_id和key_cat_name组合提供1行。
外部:
SELECT key_cat_name, product_id, COUNT(*)
FROM (...) as tbl
GROUP BY key_cat_name, product_id
对内部部分(作为tbl)的结果进行操作,计算内部部分上key_cat_name和product_id的组合出现的次数。
答案 2 :(得分:0)
你几乎就在那里,你只需要添加以下内容:
select count(products_keyword_to_product.id),products_keyword_categories.key_cat_name ... 其余的都是正确的
答案 3 :(得分:0)
更新的答案:
SELECT COUNT(*), reference_field FROM table WHERE...
HAVING field=value
GROUP BY field
对于汇总条件,您必须使用HAVING