我在mysql
中有下表数据库:
产品
- 产品 ID
- 产品名称
- 产品类别id_fk
产品功能
- feature_id
- 产品id_fk
- 功能名称
我需要根据产品的功能为产品添加排名功能,
排名将从 1 到 100 开始,例如根据产品的功能,
为每个功能赋予一个“权重”,并将产品的总体“分数”定义为其组件功能的总和,
权重是实现这一目标的一种方法,
最终将用于比较同一类别的产品,
您能否提出以下建议:
- 我需要添加哪些新表格
- 我需要向现有表格中添加哪些列
- 如何计算与表格关联的排名
所有帮助将不胜感激
最佳答案
为每个特征赋予权重:
ALTER TABLE product_features ADD COLUMN weight INT; UPDATE product_features SET weight = ? WHERE feature_id = ?; -- and repeat
选择产品(结合其功能然后分组),按总分排序:
SELECT p.*, SUM(f.weight) AS score FROM products p JOIN product_features f ON f.product_id_fk = p.product_id GROUP BY p.product_id ORDER BY score DESC
或者获取特定产品的排名:
SELECT 1+COUNT(*) AS rank FROM ( SELECT NULL FROM product_features GROUP BY product_id_fk HAVING SUM(weight) > ( SELECT SUM(weight) FROM product_features WHERE product_id_fk = ? -- your product_id here ) ) t
关于java - 根据产品功能排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38718462/