在尝试获取联系信息时出现奇怪的情况(EBS)

问题描述 投票:0回答:1

我不知道如何获取存储在HZ_PARTIES中的所有联系信息。

我们有HZ_PARTIES和HZ_PARTY_SITES,都有联系方式,对吗?

我想从HZ_PARTIES获取信息。

问题是我的查询无法正常工作,它不会检索我想要的信息。如果我使用此查询:

SELECT
    hp.party_name                              
  , hca.account_number                                           
  , hcp.phone_number
  , hcp.email_address                              
FROM apps.hz_cust_accounts hca
INNER JOIN apps.hz_cust_acct_sites_all hcas ON hca.cust_account_id = hcas.cust_account_id
INNER JOIN apps.hz_party_site hps ON hcas.party_site_id = hps.party_site_id
INNER JOIN apps.hz_locations hl ON hps.location_id = hl.location_id
INNER JOIN apps.hz_parties hp ON hps.party_id = hp.party_id
LEFT JOIN (
        SELECT
            owner_table_id
          , max(case when contact_point_type = 'PHONE' then phone_number end) phone_number
          , max(case when contact_point_type = 'EMAIL' then email_address end) email_address
        FROM hz_contact_points
        WHERE status = 'A'
        AND primary_flag = 'Y'
        AND owner_table_name = 'HZ_PARTIES'
        AND contact_point_type IN ('EMAIL','PHONE')
        GROUP BY 
            owner_table_id
    ) hcp ON hcas.party_site_id = hcp.owner_table_id 
WHERE hcas.status = 'A'
AND hps.status = 'A'
AND hca.status = 'A'
--AND hca.account_number = 'account_number'
;

请注意我使用这个条件:

hcp ON hcas.party_site_id = hcp.owner_table_id

但是这个查询不能正常工作,因为如果我想找到特定帐号的所有联系信息,它应该返回一封电子邮件,但它返回NULL

事实上,如果我把另一个条件换成前一个条件:

hcp ON hcas.party_site_id = hps.party_site_id

它返回单个account_number的几个结果,一切都是错误的但它显示我正在寻找的电子邮件。这里发生了什么?

你能帮我解决这个问题吗?

PS:每次创建客户时,都会执行以下过程:

https://www.codepile.net/pile/9nzMKy4D

oracle plsql oracle11g oracle-ebs
1个回答
0
投票

据我所知,HZ_PARTIES = HZ_PARTY_SITES这是一对多的关系。所以HZ_PARTY_SITES可以包含例如地址为“账单到”,“运到”等。首先,在EBS中查询客户有多少个网站。

我也建议你翻页http://etrm.oracle.com/pls/etrm/etrm_search.search。您可以在那里检查EBS表之间的关系。

enter image description here

如您所见,hcp ON hcas.party_site_id = hcp.owner_table_id之间的关系不存在。

© www.soinside.com 2019 - 2024. All rights reserved.