设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2045|回复: 11
打印 上一主题 下一主题

[其它] [讨论]对多个表的相同字段相同内容进行统计

[复制链接]
跳转到指定楼层
1#
发表于 2007-2-16 05:30:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
若一个数据库中有A,B两表,两表中都有相同的两个字段(Manufacture,Malfunction),现在我想做一个查询表,统计两表中以Manufacture字段为关键字段,Malfunction中相同的内容的数量。即统计A+B表中 Manufacture 为A Manlfunction为AA的有多少,为BB的有多少?可是我试了半天都无法将两表相同的内容进行合并。谁能帮我啊。谢谢。

例如

表A                                            表B

Manufacture Malfunction           Manfacture  Malfunction

A                   BB                        B                  AA

B                   CC                       C                  BB

C                   AA                       A                   DD

D                   EE                       E                   CC

E                   AA                       C                   BB

D                   BB                       D                   AA

C                    BB                      B                   BB

E                    AA                      A                   CC

B                    CC                      E                   AA

B                    BB                      B                   EE

A                    AA                      A                   AA

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-2-16 06:22:00 | 只看该作者
使用联合查询或DSum()进行统计,具体请查看帮助

[此贴子已经被作者于2007-2-15 22:23:05编辑过]

3#
 楼主| 发表于 2007-2-16 16:29:00 | 只看该作者
可是DSum()的条件必须手工输入,无法自动筛选。
4#
发表于 2007-2-16 18:27:00 | 只看该作者
看错你的内容,应该用DCount()来统计,以下是应用方法

SELECT A.Maunfacture, Count([malfunction])+DCount("malfunction","B","[Manufacture]='" & [Maunfacture] & "'") AS 两表相加数量
FROM A
GROUP BY A.Maunfacture;
5#
发表于 2007-2-16 21:05:00 | 只看该作者
用了四个查询串起来。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
发表于 2007-2-17 00:50:00 | 只看该作者
SELECT A.Maunfacture, A.malfunction, Count([malfunction])+DCount("malfunction","B","[Manufacture]='" & [Maunfacture] & "' and [malfunction]='" & [malfunction] & "'") AS 两表相加数量
FROM A
GROUP BY A.Maunfacture, A.malfunction
UNION SELECT Manufacture, malfunction, count(malfunction) AS 合计
FROM [SELECT c.Manufacture, c.malfunction
FROM B AS c
WHERE c.malfunction not in (select malfunction from A where Maunfacture=c.Manufacture)]. AS [%$##@_Alias]
GROUP BY Manufacture, malfunction;




[此贴子已经被作者于2007-2-16 16:53:02编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
 楼主| 发表于 2007-2-26 06:03:00 | 只看该作者
谁能解释一下上面的语句阿,为什么我在ACCESS2000下无法运行呢?
8#
发表于 2007-2-26 06:28:00 | 只看该作者
以下是引用jp777在2007-2-25 22:03:00的发言:
谁能解释一下上面的语句阿,为什么我在ACCESS2000下无法运行呢?



       2000可以运行的

1. 求出A表有且B表 的Manufacture和malfunction相对应的项目次数

SELECT A.Maunfacture, A.malfunction, Count([malfunction])+DCount("malfunction","B","[Manufacture]='" & [Maunfacture] & "' and [malfunction]='" & [malfunction] & "'") AS 两表相加数量
FROM A
GROUP BY A.Maunfacture, A.malfunction

2. 求出B表有而A表没有的项目

SELECT Manufacture, malfunction, count(malfunction) AS 合计
FROM [SELECT c.Manufacture, c.malfunction
FROM B AS c
WHERE c.malfunction not in (select malfunction from A where Maunfacture=c.Manufacture)]. AS [%$##@_Alias]
GROUP BY Manufacture, malfunction

3.用UNION 合并上述查询,即可查询A、B相加的数量

     也可以用Joe5525601 的方法分几个查询来实现


9#
 楼主| 发表于 2007-2-26 20:54:00 | 只看该作者
我对上面的例子做了写修改。然后再试,前半部分统计可以进行,但后半段就无法进行下去了。请问这是为什么?谢谢。
1,将表A的名称改为Motor Overhaul,将表B的名称改为Motor Rewinding.
2, 将字段Manufacture改为Manufacturer/制造商,将字段Malfunction改为Malfunction Performance/故障现象。


SELECT [Motor Overhaul].[Manufacturer/制造商], [Motor Overhaul].[Malfunction Performance/故障现象], Count([Motor Overhaul].[Malfunction Performance/故障现象])+DCount("[Malfunction Performance/故障现象]","Motor Rewinding","[Motor Rewinding].[Manufacturer/制造商]='" & [Motor Overhaul].[Manufacturer/制造商] & "' and [motor Rewinding].[Malfunction Performance/故障现象]='" & [Motor Overhaul].[Malfunction Performance/故障现象] & "'") AS 两表相加数量
FROM [Motor Overhaul]
GROUP BY [Motor Overhaul].[Manufacturer/制造商], [Motor Overhaul].[Malfunction Performance/故障现象];

UNION SELECT [motor Rewinding].[Manufacturer/制造商], [motor Rewinding].[Malfunction Performance/故障现象], Count([motor Rewinding].[Malfunction Performance/故障现象]) AS 合计
FROM [SELECT [C].[Manufacturer/制造商],[C].[Malfunction Performance/故障现象]
FROM [Motor Rewinding] AS [C]
WHERE [C].[Malfunction Performance/故障现象] not in ( SELECT [Malfunction Performance/故障现象] from [Motor Overhaul] WHERE  [Motor Overhaul].[Manufacturer/制造商]= [C].[Manufacturer/制造商])]. AS [%$##@_Alias]
GROUP BY [motor Rewinding].[Manufacturer/制造商],[motor Rewinding].[Malfunction Performance/故障现象];

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
10#
发表于 2007-3-2 21:55:00 | 只看该作者
d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-23 20:03 , Processed in 0.129088 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表