我想对捆绑商品列表(每个捆绑商品是表中的单个商品)进行排名,该列表基于其各个组件(同一表格中的每个单数商品)的总数。
因此,我有一个产品表,其中包含同一表中的主项目及其相关组件。有一列将其标识为主项或组件(main='1' 或 main='0'),还有一列将组件与主项的行 ID 相关联 (master_id='xxx')。我还有一个列,用于跟踪销售的数量(列称为sold_count)。
但是,如何按每个主要项目的所有相关组件的sold_count总数对主要项目的结果查询进行排序?
SELECT Item_Name FROM 'products' WHERE main='1' ORDER BY _______________ ???
以下是表结构:
ID | Item_Name | Main | Master_ID | Sold_Count
1 Kit A 1 0 0
2 Widget A1 0 1 3
3 Widget A2 0 1 6
4 Kit B 1 0 0
5 Widget B1 0 4 2
6 Widget B2 0 4 8
因此,我希望根据销售的相关小部件的数量对套件 A 和套件 B 进行排序。所以排序应该是:
- 套件 B
- 套件 A
因为套件 B 售出了 10 个小部件组件,而套件 A 总共只有 9 个。
这应该会给你你想要的结果
这不使用 mysql 扩展进行分组,并使用 varchar 字段进行分组
SELECT b.item_name,
Sum(a.sold_count) AS sales
FROM products AS a
INNER JOIN products AS b
ON a.master_id = b.id
GROUP BY b.id
ORDER BY Sum(a.sold_count) DESC
如果要使用 MySQL 扩展并按 int 字段分组
SqlFiddle 示例 http://www.sqlfiddle.com/#!2/1725c/4/0