0
使用Oracle 12c中,我有如下一個JSON結構:嵌套數組 - JOIN使用JSON_TABLE
{
"class": {
"students": [{
"name": "Joe",
"rollnum": 11,
"homephone": 3211113312,
"joined_on": "2016-03-01",
"subjects": [{
"subject_id": 21,
"marks": 53
}, {
"subject_id": 23,
"marks": 43
}, {
"subject_id": 24,
"marks": 35
}, {
"subject_id": 25,
"marks": 90
}, {
"subject_id": 26,
"marks": 87
}]
}, {
"name": "Toe",
"rollnum": 12,
"homephone": 1231231122,
"joined_on": "2016-03-01",
"subjects": [{
"subject_id": 21,
"marks": 66
}, {
"subject_id": 23,
"marks": 77
}, {
"subject_id": 24,
"marks": 88
}, {
"subject_id": 25,
"marks": 90
}, {
"subject_id": 26,
"marks": 98
}]
},
{
"name": "Roe",
"rollnum": 15,
"homephone": 3332221111,
"joined_on": "2016-03-01",
"subjects": [{
"subject_id": 21,
"marks": 56
}, {
"subject_id": 23,
"marks": 57
}, {
"subject_id": 24,
"marks": 87
}, {
"subject_id": 25,
"marks": 66
}, {
"subject_id": 26,
"marks": 76
}]
}
]
}
}
一類有多個學生和每個學生被登記到多個學科。此數據將作爲JSON LOB結構存儲在表列中。現在,當我試圖將嵌套數組中的SubjectID連接到Subject主表時,它不起作用。但是,如果我試圖查詢某個特定主題(或其他),它工作得很好。
下面是我正在使用的查詢。請幫忙。
SELECT sjson.name,sjson.rollnum,sm.subject_name,sjson.marks
FROM
students s,
JSON_TABLE(ss.student_json,'$.class.students[*]'
columns(
name varchar2(50) path '$.name',
rollnum number path '$.rollnum',
homephone number path '$.homephone',
joined_on varchar2 path '$.joined_on' ,
nested path '$.subjects[*]' columns(
subject_id number path '$.subject_id',
marks number path '$.marks'
)
)
)sjson,
subject_master sm
WHERE sjson.name = 'Joe'
AND sjson.subject_id = sm.subject_id;
謝謝貝達,這是我一直在爲我的客戶之一嘗試不同的數據集。顯然,我的結果不符合預期。我會嘗試共同聯繫並回歸。我發現的是,SQL引擎無法正確實現JSON嵌套列與Subject Master表之間的JOIN。 – Kunal