怎么对Access多表进行数据汇总
2个回答
展开全部
题主这个问题不存在简单的回答,需要具体情况具体分析解决。
多表汇总跟单表汇总本质上是一样的,基本方法无非就是使用聚合函数(通常需要配合group by子句一起使用)来检索出汇总信息。多表汇总一般需要使用连接与联合这两种手段将来自不同数据表的数据合并在一起。对于多表连接,我们需要特别注意它的笛卡尔乘积输出规则所导致的记录行数增大效应,否则汇总出来的数字很可能就会不正确!请注意笛卡尔乘积输出规则对于任何类型的表间连接方式的影响作用都是一样的,不论它是内连接、外连接、一对多或者多对多关系等等。
例如A表ID=1的记录有2行,B表ID=1的记录有3行,那么A、B两表基于字段ID连接后,ID=1的记录行数将输出2x3=6行,直接对连接后得到的记录集实施汇总显然就会不正确。
那么SQL多表汇总如何规避"笛卡尔"乘积输出规则的影响呢?一是先对单表实施汇总,然后才进行连接;又或者在确保至少一方表是唯一的情况下实施连接,因为1乘以任何数还是任何数,"笛卡尔"乘积输出规则不会令到连接后的记录集行数增多。
具体的多表汇总方法需要考虑的问题很多,当然不止上述因素,还是那句话需要具体问题具体分析。
多表汇总跟单表汇总本质上是一样的,基本方法无非就是使用聚合函数(通常需要配合group by子句一起使用)来检索出汇总信息。多表汇总一般需要使用连接与联合这两种手段将来自不同数据表的数据合并在一起。对于多表连接,我们需要特别注意它的笛卡尔乘积输出规则所导致的记录行数增大效应,否则汇总出来的数字很可能就会不正确!请注意笛卡尔乘积输出规则对于任何类型的表间连接方式的影响作用都是一样的,不论它是内连接、外连接、一对多或者多对多关系等等。
例如A表ID=1的记录有2行,B表ID=1的记录有3行,那么A、B两表基于字段ID连接后,ID=1的记录行数将输出2x3=6行,直接对连接后得到的记录集实施汇总显然就会不正确。
那么SQL多表汇总如何规避"笛卡尔"乘积输出规则的影响呢?一是先对单表实施汇总,然后才进行连接;又或者在确保至少一方表是唯一的情况下实施连接,因为1乘以任何数还是任何数,"笛卡尔"乘积输出规则不会令到连接后的记录集行数增多。
具体的多表汇总方法需要考虑的问题很多,当然不止上述因素,还是那句话需要具体问题具体分析。
ZESTRON
2024-09-04 广告
2024-09-04 广告
表界面分析在材料科学及化学领域占据核心地位,它深入探索物质表面与界面的微观结构、化学组成及相互作用。通过电商平台射线光电子能谱(电商平台PS)、扫描电子显微镜(SEM)及原子力显微镜(AFM)等先进技术手段,我们Dr. O.K. Wack ...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询