我有一个数据库,其中有许多具有关系的表中的数据
TABLE Cars (stock)
---------------------
Model colourid Doors
----------------------
xyz 0 2
xyz 1 4
TABLE Colour
Colourid Name
---------------------
0 Red
1 Green
我需要生成几个常规摘要,例如格式的摘要。
| colour | Num Doors
Model | red green blue | 2 4 5 6
---------|----------------------|------------------
XYZ | 1 2 3 | 4 5 3 5 <<< Numbers in stock
更新 - “汽车可以有门的排列,例如 2 门汽车或 4 门汽车。在摘要中,它显示了特定型号的每种门配置的库存汽车数量,例如有 4 辆汽车xyz 有 2 个门。请记住,这只是一个例子,汽车可能不是最好的例子,这是我当时所能想到的”
不幸的是,重新排列表格可能会使它们更适合汇总,但不适合日常操作。
我可以想出几种方法来生成这些摘要的例如/多个 SQL 查询并将表放在表示级别,SQL 级别 UNION 与多个查询,VIEWS 与多个嵌套查询或最后的 cron 作业或触发器代码以生成数据数据排列适合汇总查询和报告的汇总表。
我想知道是否有人可以给我一些指导,考虑到这些方法不是很有效,在多用户环境中变得更糟,并且可能需要定期汇总。
最佳答案
我认为您需要一个数据仓库解决方案 - 基本上只是为了报告目的构建一个新模式并定期填充这些表。
汇总表可以有多种更新机制-
计划定期执行此操作的后台作业。如果不需要最新信息,这是最好的。
使用主事务表上的触发器更新汇总表。这可能会变得有些复杂,但如果您需要最新信息,它可能是有保证的。
只要在显示报告之前绘制报告,就更新报告表格。您可以使用一些 anchor 值来确保您不会过于频繁地重新计算整个报表,只需考虑上次绘制报表后的新行或新更新的行。
唯一的问题是,每当在透视列中添加新值时,您都需要多次更改表格。
关于sql - Web App 建议的 MYSQL 汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4285651/