0

我有一个 CASE_MEMBER 表,其中每个案例成员都有一行,还有一个字段来指示成员在案例中的角色。假设角色“父母”和角色“孩子”。

在 Universe 中,我添加了 CASE_MEMBER 表,并创建了一个 Parent 对象和 Child 对象,每个对象都包含一个 WHERE 语句,该语句指定角色字段的正确值。

现在,如果我尝试使用这两个对象创建一个报告,它将只加入 CASE_MEMBER 一次,条件为“where role = 'Parent' and role = 'Child'”,这显然是不可能的。

所以我需要为每个成员类型强制查询加入 CASE_MEMBER 一次。是通过创建 CASE_MEMBER 的多个别名来做到这一点的唯一方法吗?或者是否有另一种方法可以使我的宇宙结构看起来干净并且更类似于实际的数据模型?

4

1 回答 1

1

创建 CASE_MEMBER 的别名,并在连接中包含 WHERE 条件。所以你的加入将是:

对于 CASE_MEMBER 到 DEMOGRAPHICS:

case_member.member = demographics.memberid and case_member.role='child'

对于 CASE_MEMBER 到 DEMOGRAPHICS_PARENT(DEMOGRAPHICS 的别名):

case_member.member = demographics_parent.memberid and case_member.role='parent'

假设您创建(使用来自其他问题的字段名称)、来自 case_member.caseid 的“案例 ID”对象、来自人口统计.ssn 的“儿童 SSN”和来自人口统计_父母.ssn 的“父 SSN”。创建包含所有这三个对象的报告将产生:

SELECT
   case_member.caseid,
   demographics.ssn,
   demographics_parent.ssn
FROM
   case_member,
   demographics,
   demographics demographics_parent
WHERE
   (case_member.member = demographics.memberid 
        and case_member.role='child')
   (and case_member.member = demographics_parent.memberid 
        and case_member.role='parent')

这应该产生你想要的。

请注意,在此示例中,由于我们同时包含子表和父表,因此我们将在结果集中获得两行。一种带有空白的子 SSN,另一种带有空白的父 SSN。为避免这种情况,您需要在每个周围放置一个 max()。

于 2013-07-24T15:38:08.153 回答