programing

MariaDB-JSON-document - exact where 절을 적용한 후 인덱스를 알지 못하고 배열에서 특정 요소만 선택할 수 없습니다.

powerit 2023. 8. 21. 21:40
반응형

MariaDB-JSON-document - exact where 절을 적용한 후 인덱스를 알지 못하고 배열에서 특정 요소만 선택할 수 없습니다.

JSON 문서를 가지고 있습니다. 구조/샘플 데이터는 -와 같습니다.

{
   "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"
            }
         ]
      }
   ]
}

아래와 같이 select SQL을 작성하였습니다.저는 그 특정 포트폴리오(PORTfolio_001)와 id의 제품을 가져오고 싶습니다.특정 포트폴리오의 제품이 아닌 모든 포트폴리오의 모든 제품을 받고 있습니다(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')

실제 출력 -

[
   [
      {
         "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"
      }
   ]
]

예상 출력 -

[
    {
     "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"
    }
]

누가 이 문제를 해결하는 것을 도와줄 수 있습니까?

당신의 조치에 미리 감사드립니다 :-)

안녕하세요, 프라샨트

언급URL : https://stackoverflow.com/questions/67532764/mariadb-json-document-not-able-to-select-only-specific-elements-from-array-with

반응형