我对mysql(3个月的youtube教程)很陌生,我的大部分经验来自php/html(4-5年的网站建设经验),我正在尝试为我开始收集的一些数据构建一个报告。
非常感谢您的帮助!
我有一个mysql数据库,它收集了多列材料/产品,这些材料/产品对应于建筑工地上使用的大量材料。
当前数据如下所示:
Material1 | Quantity1 | Material2 | Quantity2 | Material3 | Quantity3| Concrete Bags| 35 | Hydroseed | 1300 | Diesel Fuel | 40 |
Straw Wattles| 32 | Wooden Stakes| 200 | Diesel Fuel | 30 | Hydroseed | 1000 | Wooden Stakes| 100 | Diesel Fuel | 20 |
我可以使用什么查询或过程来添加同名材料的数量,并合并材料名称?
Hydroseed has two entries, 1300 + 1000 = 2300; Diesel Fuel has three entries, 40 + 30 + 20 = 90; etc. Material1, Material2, Material3 = MaterialName
我想以以下方式显示它:
MaterialName | Quantity | Concrete Bags | 35 |
Hydroseed | 2300 | Straw Wattles | 32 |
Wooden Stakes | 300 | Diesel Fuel | 90 |
我不太清楚该怎么做。
我当前的查询如下所示: ("SELECT Material1 AS MaterialName FROM table UNION SELECT Material2 AS MaterialName FROM table UNION SELECT Material3 AS MaterialName FROM database GROUP BY MaterialName");
我不知道如何处理数量-我不知道如何组合这两个查询并使总数与正确的材料名称匹配-可能是这样的: ("SELECT *, SUM(Quantity1 + Quantity2 + Quantity3) AS Quantity FROM table GROUP BY MaterialName");
1条答案
按热度按时间aurhwmvo1#
您可以对三种类型的列数据的并集进行聚合:
这里的基本策略是将三对材料数据放入两列中。然后,按材料进行聚合,找出每种材料的数量之和。
演示
顺便说一下,您当前的数据模型不太好,一般来说,您不应该跨多个列存储相同的逻辑对象。考虑两个列,一个用于材质,另一个用于数量。