#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! Ваш вклад был очень полезен. Я решил свой вопрос на вашем примере