如何创建视图返回父表字段及子表关联项的求和结果?
创建符合需求的MySQL视图
没问题,这就帮你搞定这个视图的创建!思路很明确:我们需要关联parent和child两张表,按父ID分组后计算每个父项的总金额。
最终的视图创建语句
CREATE VIEW parent_total AS SELECT c.parent_id, p.name, SUM(c.unit_price * c.quantity) AS total FROM parent p INNER JOIN child c ON p.id = c.parent_id GROUP BY c.parent_id, p.name;
语句细节说明
- 表关联逻辑:用
INNER JOIN通过p.id = c.parent_id关联两张表,确保只返回有对应子项的父记录(如果需要包含没有子项的父记录,可以换成LEFT JOIN,此时无数据的父项total会显示NULL) - 总金额计算:
SUM(c.unit_price * c.quantity)会先算出每个子项的金额(单价×数量),再把同属一个父项的所有子项金额求和,得到父项的总金额 - 分组规范:按
parent_id和name分组,这是为了适配MySQL的ONLY_FULL_GROUP_BY模式,避免分组查询时的语法报错
验证结果
创建视图后执行SELECT * FROM parent_total;,就能得到你需要的结果:
| parent_id | name | total |
|---|---|---|
| 1 | foo | 100 |
| 2 | bar | 500 |
内容的提问来源于stack exchange,提问作者DevonDahon
相关产品推荐
相关产品推荐

