Может кто-нибудь объяснить, как получить значение столбца из select и присвоить другому select в postgres

#sql #database #postgresql #select

#sql #База данных #postgresql #выберите

Вопрос:

может кто-нибудь объяснить, как передать значение столбца из select в другой select в моем случае, чтобы передать значение cad_products.id_product в поле с именем «параметр»?

следуйте коду.

 SELECT
    json_agg ( T ) AS retorno 
FROM
    (
SELECT
    cad_products.*,
    json_agg ( b ) AS properties 
FROM
    cad_products,
    (
SELECT
    cad_properties.id_property,
    cad_properties.description 
FROM
    cad_products_properties
    LEFT JOIN cad_properties  ON cad_products_properties.id_property  = cad_properties.id_property  
WHERE
    cad_products_properties.id_product = **"parameter"**
    ) b 
WHERE
    cad_products.id_agr = 37
GROUP BY
    cad_products.id_product 
    ) T
 

Ответ №1:

Трудно сказать, что такое ваш параметр и откуда он берется, но я бы предложил обработать это в join. Кроме того, читаемость может быть несколько улучшена с помощью CTE, подобного следующему:

 WITH data AS
(
SELECT prod.*
     , json_object_agg(prop.id_property, prop.description) AS properties
  FROM cad_products prod
  JOIN cad_products_properties cpp ON (cpp.id_product = prod.id_product) -- Not sure what your parameter is
  LEFT JOIN cad_properties prop ON (cpp.id_property = prop.id_property)
) SELECT JSON_AGG(data) AS retorno; 
 

Комментарии:

1. Спасибо @J Spratt! Ваш вклад был очень полезен. Я решил свой вопрос на вашем примере