1

在 oracle 应用程序(版本 11)网页中,有“客户”然后是“客户帐户”,然后您可以选择打开“帐户联系方式”屏幕以查看“联系信息”的详细信息。我在那里看到姓名和“联系电话”。我可以通过以下查询找到“联系电话”,但我不知道如何访问“联系信息”的前缀、名字、中间名、姓氏、后缀和职位

我正在尝试编写一个小 SQL 语句,通过指定单个 HZ_ACCOUNT_CONTACT.ACCOUNT_NUMBER 值来提取与帐户关联的“联系信息”的名字和姓氏。所以输入是一个长值,返回是“联系人”的名字+姓氏列表

我的半生不熟的查询(这可能是完全错误的)如下:

SELECT
  CA1.CUST_ACCOUNT_ID,
  CA1.ACCOUNT_NUMBER, ----------------------------- The Input
  P1.PARTY_ID   AS P1_PARTY_ID,
  P1.PARTY_NAME AS P1_PARTY_NAME,
  OC2.CONTACT_NUMBER,
  R2.CUST_ACCOUNT_ROLE_ID
FROM
  HZ_CUST_ACCOUNTS           CA1
  JOIN HZ_PARTIES            P1  ON P1.PARTY_ID  = CA1.PARTY_ID
  JOIN HZ_RELATIONSHIPS      R   ON R.SUBJECT_ID = P1.PARTY_ID
  JOIN HZ_PARTIES            P2  ON P2.PARTY_ID  = R.PARTY_ID 
  JOIN HZ_ORG_CONTACTS       OC2 ON OC2.PARTY_RELATIONSHIP_ID = R.RELATIONSHIP_ID
  JOIN HZ_CUST_ACCOUNT_ROLES R2  ON R2.PARTY_ID = P2.PARTY_ID
  -- What else do I need to join to get to "contact infomation"?
WHERE
  R.RELATIONSHIP_CODE = 'CONTACT'
  AND R.OBJECT_TABLE_NAME = 'HZ_PARTIES'
  AND P2.PARTY_TYPE = 'PARTY_RELATIONSHIP'
  AND CA1.ACCOUNT_NUMBER = '577042' ; -------------- The Input

在我损坏/不完整的查询中,577042 是帐号

如何完成查询以获取联系人的名字和姓氏?

谢谢您的帮助!

4

1 回答 1

1

Oracle 交易社区架构 (tca) 的方法是使用ar.hz_relationships表驱动此查询。这是一个ERD:

在此处输入图像描述

您必须确定这种关系的主体和客体(组织和个人),如下所示。

所有好的联系人属性都在hz_parties别名中cont,在下面的查询中:

SELECT cacct.account_number cust_account,
      cust.party_name customer_name,
      crole.role_type contact_role_type,
      cont.person_last_name contact_last_name,
      cont.person_first_name contact_first_name,
      cont.person_name_suffix contact_suffix,
      cont.party_name contact_name,
      rparty.party_name relationship_party_name
    FROM ar.hz_relationships rel
    JOIN ar.hz_parties cust
    ON rel.subject_id = cust.party_id
    JOIN ar.hz_parties cont
    ON rel.object_id = cont.party_id
    JOIN ar.hz_parties rparty
    ON rel.party_id = rparty.party_id
    JOIN ar.hz_cust_accounts cacct
    ON rel.subject_id = cacct.party_id
    JOIN ar.hz_cust_account_roles crole
    ON cacct.cust_account_id    = crole.cust_account_id
    AND rel.party_id            = crole.party_id
    WHERE rel.relationship_code = 'CONTACT'
    AND rel.object_table_name   = 'HZ_PARTIES'
    AND rel.subject_table_name  = 'HZ_PARTIES'
    AND rel.subject_type        = 'ORGANIZATION'
    AND rel.object_type         = 'PERSON'
    AND rel.directional_flag    = 'B'
    AND rel.relationship_type   = 'CONTACT'
    AND crole.role_type         = 'CONTACT'
    AND rparty.party_type       = 'PARTY_RELATIONSHIP'
    ORDER BY 1,4,5

这不涉及联系人/关系的状态。

于 2014-10-13T05:44:43.910 回答