【发布时间】:2016-08-08 13:59:49
【问题描述】:
我有一张表,Relationships,结构如下
Relationships
------
Relationship Employer_ID Employee_ID
10000 10020 10021
10001 10019 10020
10002 10021 10018
雇主和雇员之间的关系由关系列唯一标识。一个雇员可以有多个雇主,一个雇主可以有多个雇员。每个人都有自己的唯一 ID,它可以在 Employer ID 和 Employee ID 字段中出现多次。
还有另一个表格,Review,结构也是如此。
Meetings Review
------
Meeting Attendee_ID
10000 10020
10000 10019
10001 10018
10001 10021
此表显示会议和与会者列表。只有两个人可以参加会议 - 对于会议,每个会议参加者在“参加者”字段中代表一次。参加者字段中的 ID 可以与关系表中雇主/雇员字段中的 ID 连接。
我希望得到如下结果集——其中每一行都是一个唯一的会议,我们通过使用两个单独的列(Employer_ID 和 Employee_ID)确定了两个会议参加者之间的关系。
Results
-----
Meeting Employer_ID Employee_ID
10000 10019 10020
10001 10021 10018
我的问题是——从概念上讲,我将如何做这件事?
我最初的想法是我应该只在 Attendee_ID 上使用最大值和最小值,然后制作两个派生表——其中一个最大的参加者 ID (Attendee_1) 与 Employer ID 匹配,而最小 ID (Attendee_2) 匹配在员工 ID 上。然后,使用 UNION 查询将此结果集添加到另一个派生表中,其中最大参加者 ID (Attendee_1) 与 Employee ID 匹配,最小 ID (Attendee)2) 与 Employer ID 匹配。
这似乎给了我预期的结果,但有没有更好的方法来做到这一点?
【问题讨论】:
-
您的会议似乎总是只有一名员工及其雇主的会议(这就是为什么您可以在每次会议上显示雇主和员工的原因)。那么,为什么您的会议表不只是每次会议都有一条记录和相应的关系编号呢?