Используя Oracle Database 12c, у меня есть структура JSON, как показано ниже.
Этот запрос не может вернуть результаты, хотя в учетной записи и таблице ACCOUNTDETAILS имеются соответствующие записи (role = B является вторым элементом в массиве party).
тот же запрос работает, когда я запрашиваю act.ROLE = "A" (первый элемент в массиве party).
Accounts TABLE
{
"id":"1223",
"parties":[
{
"crossReference":[
{
"crsrefvalue":"z123A",
---
}
],
"role":"A"
},
{
"crossReference":[
{
"crsrefvalue":"z123B",
---
}
],
"role":"B"
}
]
}
wanted to join this account table with ACCOUNTDETAILS(columns crsrefvalue,crsrefname) on value account.crsrefvalue=ACCOUNTDETAILS.crsrefvalue and account.parties.role="B"
json query is like below
With ACCT AS (
SELECT ID, crsrefvalue, ROLE from account,
JSON_TABLE(JSON,’$’ COLUMNS(ID PATH ‘$.ID’,
NESTED PATH ‘$.PARTIES[*]’ COLUMNS(ROLE PATH ‘.ROLE’, NESTED PATH ‘$.crossReference[*]’ COLUMNS(crsrefvalue PATH ‘$.crsrefvalue’)))) JS_TAB
)
SELECT FROM ACCOUNTDETAILS dtls, ACCT act where act.crsrefvalue= dtls.crsrefvalue and act.ROLE ="B"
**problem 1)** this query could not return result though matching records are available in account and ACCOUNTDETAILS table.(role=B is second element in parties array)
the same query works when i query for act.ROLE ="A"(first element in parties array)