【发布时间】:2012-08-22 03:01:46
【问题描述】:
我不仅仅是 Access 2010 的新手,但肯定不是专家。我每天都在使用 Access,但这个问题让我很头疼。
我需要查询一个表以检索一组组、子组和所有可能的子成员。 该表的布局如下:
所需的组 |当前田纳西州 |冲刺电话号码 |姓氏 |名字
5553215255 | 5553210001 | 4143210009 |堰鲍勃
5553215255 | 5553210002 | 4143210008 |加西亚·杰瑞
5553215255 |5553210003 | 4143210007 |亨德里克斯·吉米
5553215255 | 5553210004 | 4143210006 | Peds 页面
5553210004 | 3144230009 | 4143210005 |现金强尼
5553210004 | 3144230008 | 4143210003 |莫里森·吉姆
5553210004 | 3144230007 | 4143210002 |贝多芬路德维希
5553210004 | 3144230911 | 4143210001 |急救人员页面
3144230911 | 6362341101 | 4143210099 |弹奏者乔
3144230911 | 6362341101 | 4143210098 |水星房地美
3144230911 | 6362341101 | 4143210097 |普雷斯利·埃尔维斯
3144230911 | 6362341101 | 4143210096 |波波大
定义的字段:
- Desired GROUP:基于角色或其他标准的一组人。寻呼时,此号码将向给定组的成员发送寻呼。
- 当前 TN:给定成员的电话。成员可以是个人或 Desired GROUP
- Sprint 电话号码:有些人会用 Sprint 电话替换他们的寻呼机。
- 姓氏:角色或个人的姓氏。有时是组名或类似名称。
- 名字:一个人的名字
我需要一个查询,在运行时返回所有分页组的所有成员的列表。 假设我向医生发送页面。寻呼医生还寻呼 Peds 的所有成员,这反过来又寻呼紧急 Peds 的所有成员 结果将显示所有医生成员、所有 Peds 成员(除组名)和所有被寻呼的紧急 Peds 成员的初始页面。注意 Peds Page 和 Emergency Peds Page 被排除在外。此处说明:
所需的组 |当前田纳西州 |冲刺电话号码 |姓氏 |名字
5553215255 | 5553210001 | 4143210009 |堰鲍勃
5553215255 | 5553210002 | 4143210008 |加西亚·杰瑞
5553215255 |5553210003 | 4143210007 |亨德里克斯·吉米
5553210004 | 3144230009 | 4143210005 |现金强尼
5553210004 | 3144230008 | 4143210003 |莫里森·吉姆
5553210004 | 3144230007 | 4143210002 |贝多芬路德维希
3144230911 | 6362341101 | 4143210099 |弹奏者乔
3144230911 | 6362341101 | 4143210098 |水星房地美
3144230911 | 6362341101 | 4143210097 |普雷斯利·埃尔维斯
3144230911 | 6362341101 | 4143210096 |波波大
- 一位同事建议手动查询多次,将结果保存到多个表中,然后将所有结果表附加到一个表中。我该怎么做呢?看来这是一个我在我的水平上很容易理解的解决方案,但我不太明白,尽我所能尝试。
- 除了上面的解决方法,还有其他方法吗?
- 如果我将第二个类似的表与第一个进行比较,我还需要知道什么吗?第二个的成员可能是第一个的小组负责人。
提前非常感谢。
编辑以包含来自 cmets 的 sql。
SELECT *
FROM (SELECT tbl_group_build.[desired group],tbl_group_build.[current tn],
tbl_group_build.[sprint telephone number],
tbl_group_build.[last name],
tbl_group_build.[first name]
FROM tbl_group_build
UNION
SELECT tbl_Group_build_1.[desired group],tbl_Group_build_1.[current tn],
tbl_Group_build_1.[sprint telephone number],
tbl_Group_build_1.[last name],tbl_Group_build_1.[first name]
FROM tbl_group_build
INNER JOIN tbl_group_build AS tbl_Group_build_1
ON tbl_group_build.[current tn] =
tbl_Group_build_1.[desired group]
UNION
SELECT tbl_Group_build_2.[desired group],tbl_Group_build_2.[current tn],
tbl_Group_build_2.[sprint telephone number],
tbl_Group_build_2.[last name],tbl_Group_build_2.[first name]
FROM (tbl_group_build
INNER JOIN tbl_group_build AS tbl_Group_build_1
ON tbl_group_build.[current tn] =
tbl_Group_build_1.[desired group])
INNER JOIN tbl_group_build AS tbl_Group_build_2
ON tbl_Group_build_1.[current tn] =
tbl_Group_build_2.[desired group]) g
【问题讨论】:
-
你想达到什么输出?您的解释过于复杂,我不确定您实际上希望从查询中得到什么。一次归还所有东西不是更有意义吗?此外,如果这确实是一个表而不是查询,您应该考虑对其进行规范化。
-
同意规范化,但不幸的是,我们已经过了这一点。我被告知此时不要担心。
-
是否有一个单独的表格表明哪些组被分页了?成员是否属于多个组?有什么方法可以根据数据库中的数据知道子组是什么?
-
同意规范化,但不幸的是,我们已经过了这一点。我被告知此时不要担心。至于我想要实现的目标:假设我向医生组的领导号码发送了一个页面。从那里它向该组中的医生和 Peds Page 发送一个页面,该页面是另一个组的负责人。 Peds Page 然后对所有成员进行寻呼,其中包括紧急 Peds 页面编号,该编号是紧急 Peds 的潜在客户编号。我的老板希望看到看起来类似于第二个表格示例的最终结果(我现在将清理它)。
-
所有潜在客户都在 GROUP NUMBER 列中。成员 TN 中的一些是其中一些相同的线索。 MEMBER TN 列中没有不在 GROUP NUMBER 列中的潜在客户。我尝试了“SELF-JOIN”,还复制了我的原始表格并将 LEAD NUMBER 从原始表格加入副本上的 MEMBER TN。如果我将其中一个表中的所有字段拉到网格中,我会得到原始集合的副本。所以显然我没有从正确的表格中删除正确的字段。