我不知道如何获取存储在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:每次创建客户时,都会执行此过程:
答案 0 :(得分:0)
据我所知HZ_PARTIES = HZ_PARTY_SITES
,这是一对多的关系。因此HZ_PARTY_SITES可以包含例如地址“开单至”,“托运至”等
首先,在EBS中检查客户拥有多少个站点。
我还建议您在页面http://etrm.oracle.com/pls/etrm/etrm_search.search上进行。您可以在此处检查EBS表之间的关系。
如您所见,hcp ON hcas.party_site_id = hcp.owner_table_id
之间的关系
不存在。