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

0

There are 0 best solutions below