ОШИБКА: невозможно извлечь элементы из скаляра из столбца таблицы - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть таблица продуктов со столбцом product_data (тип JSONB), и данные представлены в следующем формате.

 [{
    "Price": 34599,
    "Units": 1,
    "productId": 3,
    "componentId": 0,
    "isDuplicate": false,
    "productCode": "PRD-3",
    "productName": "OnePlus 6T",
    "UnitDiscount": 0,
    "discountType": "1",
    "componentCode": "",
    "componentList": [{
        "componentId": 5,
        "componentCode": "ACC-1",
        "componentName": "Charger",
        "componentActive": true,
        "componentTaxCode": null,
        "componentCategory": "General",
        "componentUnitPrice": 0,
        "componentCategoryId": 1,
        "componentReorderValue": 20
    }, {
        "componentId": 6,
        "componentCode": "ACC-2",
        "componentName": "Earphone",
        "componentActive": true,
        "componentTaxCode": null,
        "componentCategory": "General",
        "componentUnitPrice": 0,
        "componentCategoryId": 1,
        "componentReorderValue": 20
    }],
    "productUnitPrice": 34599,
    "UnitPriceDiscount": 34599,
    "componentCategory": "",
    "componentUnitPrice": ""
}, {
    "Price": 1200,
    "Units": 1,
    "productId": 3,
    "componentId": 5,
    "isDuplicate": false,
    "productCode": "PRD-3",
    "productName": "OnePlus 6T",
    "UnitDiscount": 0,
    "discountType": "1",
    "componentCode": "ACC-1",
    "componentList": [{
        "componentId": 5,
        "componentCode": "ACC-1",
        "componentName": "Charger",
        "componentActive": true,
        "componentTaxCode": null,
        "componentCategory": "General",
        "componentUnitPrice": 0,
        "componentCategoryId": 1,
        "componentReorderValue": 20
    }, {
        "componentId": 6,
        "componentCode": "ACC-2",
        "componentName": "Earphone",
        "componentActive": true,
        "componentTaxCode": null,
        "componentCategory": "General",
        "componentUnitPrice": 0,
        "componentCategoryId": 1,
        "componentReorderValue": 20
    }],
    "componentName": "Charger",
    "productUnitPrice": "",
    "UnitPriceDiscount": 1200,
    "componentCategory": "General",
    "componentUnitPrice": "1200"
}, {
    "Price": 800,
    "Units": 1,
    "productId": 3,
    "componentId": 6,
    "isDuplicate": false,
    "productCode": "PRD-3",
    "productName": "OnePlus 6T",
    "UnitDiscount": 0,
    "discountType": "1",
    "componentCode": "ACC-2",
    "componentList": [{
        "componentId": 5,
        "componentCode": "ACC-1",
        "componentName": "Charger",
        "componentActive": true,
        "componentTaxCode": null,
        "componentCategory": "General",
        "componentUnitPrice": 0,
        "componentCategoryId": 1,
        "componentReorderValue": 20
    }, {
        "componentId": 6,
        "componentCode": "ACC-2",
        "componentName": "Earphone",
        "componentActive": true,
        "componentTaxCode": null,
        "componentCategory": "General",
        "componentUnitPrice": 0,
        "componentCategoryId": 1,
        "componentReorderValue": 20
    }],
    "componentName": "Earphone",
    "productUnitPrice": "",
    "UnitPriceDiscount": 800,
    "componentCategory": "General",
    "componentUnitPrice": "800"
}]

При извлечении данных из запроса ниже показанный не может получить скалярные элементы, в то время как данные JSONB находятся в форме массива.когда вы копируете эти данные в запросе, то, пожалуйста, помогите.

  SELECT product_data from (
SELECT jsonb_array_elements(PRODUCT_DATA) as  product_data  FROM PRODUCTS 
    ) X 

, копируя эти данные jsonb вместо столбца в запрос, тогда он работает нормально.

...