Reputation: 11
I have JSON document. structure/sample data is like -
{
"id":"201",
"portfolio":[
{
"portfolio_id":"PORTFOLIO_001",
"portfolio_name":"AAA",
"product":[
{
"product_id":"PORTFOLIO_001_PRODUCT_001",
"product_trigram":"PORTFOLIO_001_PRODUCT_001_1",
"product_name":"PORTFOLIO_001_PRODUCT_001_NAME"
},
{
"product_id":"PORTFOLIO_001_PRODUCT_002",
"product_trigram":"PORTFOLIO_001_PRODUCT_002_1",
"product_name":"PORTFOLIO_001_PRODUCT_002_NAME"
}
]
},
{
"portfolio_id":"PORTFOLIO_002",
"portfolio_name":"BBB",
"product":[
{
"product_id":"PORTFOLIO_002_PRODUCT_001",
"product_trigram":"PORTFOLIO_002_PRODUCT_001_1",
"product_name":"PORTFOLIO_002_PRODUCT_001_NAME"
}
]
}
]
}
I have written select SQL as below. I want to fetch products of that specific portfolio(PORTFOLIO_001) and id. I am getting all products of all portfolios instead of products of specific portfolio(PORTFOLIO_001)
SELECT json_extract(j, '$.portfolio[*].product') FROM t WHERE json_contains(json_extract(j, '$.portfolio[*].portfolio_id'), '"PORTFOLIO_001"') AND JSON_CONTAINS(j, '"201"', '$.id')
Actual output -
[
[
{
"product_id":"PORTFOLIO_001_PRODUCT_001",
"product_trigram":"PORTFOLIO_001_PRODUCT_001_1",
"product_name":"PORTFOLIO_001_PRODUCT_001_NAME"
},
{
"product_id":"PORTFOLIO_001_PRODUCT_002",
"product_trigram":"PORTFOLIO_001_PRODUCT_002_1",
"product_name":"PORTFOLIO_001_PRODUCT_002_NAME"
}
],
[
{
"product_id":"PORTFOLIO_002_PRODUCT_001",
"product_trigram":"PORTFOLIO_002_PRODUCT_001_1",
"product_name":"PORTFOLIO_002_PRODUCT_001_NAME"
}
]
]
Expected output -
[
{
"product_id":"PORTFOLIO_001_PRODUCT_001",
"product_trigram":"PORTFOLIO_001_PRODUCT_001_1",
"product_name":"PORTFOLIO_001_PRODUCT_001_NAME"
},
{
"product_id":"PORTFOLIO_001_PRODUCT_002",
"product_trigram":"PORTFOLIO_001_PRODUCT_002_1",
"product_name":"PORTFOLIO_001_PRODUCT_002_NAME"
}
]
Can someone please help me to resolve this issue ?
Thanks in advance for your action :-)
Regards, Prashant
Upvotes: 1
Views: 160