Office中国论坛/Access中国论坛

标题: 如何用查询找出共同的数据 [打印本页]

作者: saraou    时间: 2012-5-8 14:20
标题: 如何用查询找出共同的数据
我现在有一个表如下:请问如何利用查询找出欧洲和美国客户共用的供应商A,B,C,E,G. 欧洲独有的供应商D,H,美国独有的供应商F,I。
客户   供应商
欧洲     A
美国     A
欧洲     B
美国     B
欧洲     C
美国     C
欧洲     D
美国     E
欧洲     E
美国     F
欧洲     G
美国     G
欧洲     H
美国     I
..................



作者: Henry D. Sy    时间: 2012-5-8 14:44
试试:dcount
作者: Henry D. Sy    时间: 2012-5-8 14:54
1.共同的供应商
  1. SELECT b.客户, b.供应商
  2. FROM 表2 AS b
  3. WHERE ((((select count(供应商) from 表2 a where a.供应商=b.供应商))>=2));
复制代码
2. 单一的供应商
  1. SELECT b.国家, b.供应商
  2. FROM 表2 AS b
  3. WHERE ((((select count(供应商) from 表2 a where a.供应商=b.供应商))=1));
复制代码

作者: Henry D. Sy    时间: 2012-5-8 14:58
1.共同的供应商
  1. SELECT b.客户, b.供应商
  2. FROM 表2 AS b
  3. WHERE ((((select count(供应商) from 表2 a where a.供应商=b.供应商))>=2));
复制代码
2. 单一的供应商
  1. SELECT b.国家, b.供应商
  2. FROM 表2 AS b
  3. WHERE ((((select count(供应商) from 表2 a where a.供应商=b.供应商))=1));
复制代码

作者: Henry D. Sy    时间: 2012-5-8 14:59
如果不想重复显示记录
  1. SELECT DISTINCT b.供应商
  2. FROM 表2 AS b
  3. WHERE ((((select count(供应商) from 表2 a where a.供应商=b.供应商))>=2));
复制代码

作者: Henry D. Sy    时间: 2012-5-8 15:05
如果不想用子查询,dcount也可以
  1. SELECT DISTINCT 表2.供应商
  2. FROM 表2
  3. WHERE (((DCount("供应商","表2","供应商='" & [供应商] & "'"))>=2));
复制代码

作者: saraou    时间: 2012-5-8 15:19
Henry D. Sy 发表于 2012-5-8 14:58
1.共同的供应商2. 单一的供应商

我只有一个表,你哪来的表a,b呢?
作者: Henry D. Sy    时间: 2012-5-8 15:46
saraou 发表于 2012-5-8 15:19
我只有一个表,你哪来的表a,b呢?

a,b是表的别名,在这个例子中是表2的别名
作者: saraou    时间: 2012-5-8 15:53
Henry D. Sy 发表于 2012-5-8 15:46
a,b是表的别名,在这个例子中是表2的别名

不好意思,还是不明白您的代码的意思。为什么要用别名呢?
作者: Henry D. Sy    时间: 2012-5-8 15:54
saraou 发表于 2012-5-8 15:53
不好意思,还是不明白您的代码的意思。为什么要用别名呢?

因为同一个表被引用2次
作者: saraou    时间: 2012-5-8 16:20
照着你的代码写的,出现错误,请帮忙看看哪里错了。

SELECT DISTINCT [vendor list].[Department_Group], [vendor list].[Supplier Name]
FROM [Global vendor list]
WHERE (((DCount("Supplier Name","vendor list","Supplier Name='" & [Supplier Name] & "'"))>=2));
[attach]49145[/attach]
作者: Henry D. Sy    时间: 2012-5-8 17:06
字段表名称尽量不要有空格,单词之间可以用大小写来区分
比如:将 Supplier Name 写成 SupplierName
  1. SELECT DISTINCT [vendor list].[Department_Group], [vendor list].[Supplier Name]
  2. FROM [Global vendor list]
  3. WHERE (((DCount("[Supplier Name]","vendor list","[Supplier Name]='" & [Supplier Name] & "'"))>=2));
复制代码

作者: Henry D. Sy    时间: 2012-5-8 17:07
字段表名称尽量不要有空格,单词之间可以用大小写来区分
比如:将 Supplier Name 写成 SupplierName
  1. SELECT DISTINCT [vendor list].[Department_Group], [vendor list].[Supplier Name]
  2. FROM [Global vendor list]
  3. WHERE (((DCount("[Supplier Name]","vendor list","[Supplier Name]='" & [Supplier Name] & "'"))>=2));
复制代码





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3