Странное состояние при попытке получить контактную информацию (EBS)

#oracle #plsql #oracle11g #oracle-ebs

#Oracle #plsql #oracle11g #oracle-ebs

Вопрос:

Я не знаю, как получить всю контактную информацию, которая хранится в 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 На hcas.party_site_id = hcp.owner_table_id

Но этот запрос НЕ работает должным образом, потому что, если я хочу найти всю контактную информацию для определенного номера учетной записи, он должен вернуть электронное письмо, но вместо этого возвращает NULL

Дело в том, что если я поставлю это другое условие взамен предыдущего:

hcp На hcas.party_site_id = hps.party_site_id

Он возвращает несколько результатов для одного account_number, все неверно, НО он показывает электронное письмо, которое я ищу. Что здесь происходит?

Не могли бы вы, пожалуйста, помочь мне решить это?

PS: Каждый раз, когда создается клиент, выполняется эта ПРОЦЕДУРА:

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

Ответ №1:

Насколько я знаю 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 не существует.

Комментарии:

1. Спасибо за ответ!. Я не знаю, приятель.. я пытался много раз без успеха. Я застрял. У вас есть какие-либо идеи по этому поводу? Как я должен изменить свой запрос? 🙁

2. Извините, я был неправ в комментарии выше. Попробуйте сменить участника ) hcp ON hcas.party_site_id = hcp.owner_table_id на ) hcp ON hps.party_site_id = hcp.owner_table_id есть ли у вас какие-либо результаты? В качестве параметра вы должны использовать AND hps.party_site_number = :p_party_site_number против AND hca.account_number = 'account_number' .

3. На самом деле, номер сайта участника более подробный, чем номер учетной записи.

4. Он показывает пустые электронные письма и должен возвращать одно, потому что оно существует : (. Что не так?

5. Это не работает, оно показывает пустые электронные письма, а как насчет ‘HZ_PARTIES’? Я не знаю, что делать: (