我想对捆绑产品列表进行排名(每个捆绑包是表中的单个项目),该列表基于其各个组件的总数(在同一个表中是每个单独的项目)。
所以我有一个产品表,其中包含同一个表中的主要项目及其相关组件。有一列将其标识为主项目或组件(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
所以我希望根据销售的相关小部件的数量对Kit A和Kit B进行排序。所以排序应该是:
因为套件B销售了10个小部件组件,而套件A仅有9个小部件。
答案 0 :(得分:1)
这可能会给你想要的结果
这不使用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