| 2 |
98.14 ms |
SELECT product.id, product.event, product_active.active, product_active.active_from, product_active.active_to, product_seo.title AS seo_title, product_seo.keywords AS seo_keywords, product_seo.description AS seo_description, product_trans.name AS product_name, product_desc.preview AS product_preview, product_desc.description AS product_description, product_info.url, category_offer.reference AS product_offer_reference, project_profile_discount.value AS project_discount, JSON_AGG
( DISTINCT
JSONB_BUILD_OBJECT
(
'0', CONCAT(product_offer.value, product_variation.value, product_modification.value, product_modification_price.price),
'offer_uid', product_offer.id,
'offer_value', product_offer.value,
'offer_postfix', product_offer.postfix,
'offer_reference', category_offer.reference,
'offer_name', category_offer_trans.name,
'variation_uid', product_variation.id,
'variation_value', product_variation.value,
'variation_postfix', product_variation.postfix,
'variation_reference', category_variation.reference,
'variation_name', category_variation_trans.name,
'modification_uid', product_modification.id,
'modification_value', product_modification.value,
'modification_postfix', product_modification.postfix,
'modification_reference', category_modification.reference,
'modification_name', category_modification_trans.name,
'article', CASE
WHEN product_modification.article IS NOT NULL THEN product_modification.article
WHEN product_variation.article IS NOT NULL THEN product_variation.article
WHEN product_offer.article IS NOT NULL THEN product_offer.article
WHEN product_info.article IS NOT NULL THEN product_info.article
ELSE NULL
END,
'product_invariable_id', COALESCE(
product_invariable.id
),
'profile_discount', NULL,
'project_discount', project_profile_discount.value,
'promotion_price', NULL,
'promotion_active', NULL,
'price', CASE
WHEN product_modification_price.price IS NOT NULL AND product_modification_price.price > 0 THEN product_modification_price.price
WHEN product_variation_price.price IS NOT NULL AND product_variation_price.price > 0 THEN product_variation_price.price
WHEN product_offer_price.price IS NOT NULL AND product_offer_price.price > 0 THEN product_offer_price.price
WHEN product_price.price IS NOT NULL AND product_price.price > 0 THEN product_price.price
ELSE NULL
END,
'old_price', COALESCE(
NULLIF(product_modification_price.old, 0),
NULLIF(product_variation_price.old, 0),
NULLIF(product_offer_price.old, 0),
NULLIF(product_price.old, 0),
0
),
'currency', CASE
WHEN product_modification_price.price IS NOT NULL AND product_modification_price.price > 0 THEN product_modification_price.currency
WHEN product_variation_price.price IS NOT NULL AND product_variation_price.price > 0 THEN product_variation_price.currency
WHEN product_offer_price.price IS NOT NULL AND product_offer_price.price > 0 THEN product_offer_price.currency
WHEN product_price.price IS NOT NULL AND product_price.price > 0 THEN product_price.currency
ELSE NULL
END,
'quantity', CASE
WHEN product_modification_quantity.quantity IS NOT NULL THEN (product_modification_quantity.quantity - product_modification_quantity.reserve)
WHEN product_variation_quantity.quantity IS NOT NULL THEN (product_variation_quantity.quantity - product_variation_quantity.reserve)
WHEN product_offer_quantity.quantity IS NOT NULL THEN (product_offer_quantity.quantity - product_offer_quantity.reserve)
WHEN product_price.quantity IS NOT NULL THEN (product_price.quantity - product_price.reserve)
ELSE NULL
END
)
)
FILTER (WHERE
CASE
WHEN product_modification_price.price IS NOT NULL AND product_modification_price.price > 0 THEN product_modification_price.price
WHEN product_variation_price.price IS NOT NULL AND product_variation_price.price > 0 THEN product_variation_price.price
WHEN product_offer_price.price IS NOT NULL AND product_offer_price.price > 0 THEN product_offer_price.price
WHEN product_price.price IS NOT NULL AND product_price.price > 0 THEN product_price.price
ELSE 0
END > 0)
AS product_offers,
JSON_AGG
(DISTINCT
CASE
WHEN product_modification_image.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_modification_image.root,
'product_img', CONCAT ( '/upload/product_modification_images' , '/', product_modification_image.name),
'product_img_ext', product_modification_image.ext,
'product_img_cdn', product_modification_image.cdn
)
WHEN product_variation_image.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_variation_image.root,
'product_img', CONCAT ( '/upload/product_variation_images' , '/', product_variation_image.name),
'product_img_ext', product_variation_image.ext,
'product_img_cdn', product_variation_image.cdn
)
WHEN product_offer_images.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_offer_images.root,
'product_img', CONCAT ( '/upload/product_offer_images' , '/', product_offer_images.name),
'product_img_ext', product_offer_images.ext,
'product_img_cdn', product_offer_images.cdn
)
WHEN product_photo.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_photo.root,
'product_img', CONCAT ( '/upload/product_photo' , '/', product_photo.name),
'product_img_ext', product_photo.ext,
'product_img_cdn', product_photo.cdn
)
ELSE NULL
END)
AS product_images, category.id as category_id, category_trans.name AS category_name, category_info.url AS category_url, category_info.threshold AS category_threshold, category_cover.ext AS category_cover_ext, category_cover.cdn AS category_cover_cdn,
CASE
WHEN category_cover.name IS NOT NULL
THEN CONCAT ( '/upload/product_category_cover' , '/', category_cover.name)
ELSE NULL
END AS category_cover_dir, JSON_AGG
( DISTINCT
JSONB_BUILD_OBJECT
(
'0', category_section_field.sort,
'field_name', category_section_field.name,
'field_public', category_section_field.public,
'field_card', category_section_field.card,
'field_type', category_section_field.type,
'field_trans', category_section_field_trans.name,
'field_value', product_property.value
)
)
AS category_section_field FROM product INNER JOIN product_active product_active ON product_active.event = product.event LEFT JOIN product_seo product_seo ON product_seo.event = product.event AND product_seo.local = ? LEFT JOIN product_trans product_trans ON product_trans.event = product.event AND product_trans.local = ? LEFT JOIN product_description product_desc ON product_desc.event = product.event AND product_desc.device = ? LEFT JOIN product_price product_price ON product_price.event = product.event LEFT JOIN product_info product_info ON product_info.product = product.id LEFT JOIN product_offer product_offer ON product_offer.event = product.event INNER JOIN users_profile project_profile ON
project_profile.id = ? INNER JOIN product_categories_product product_event_category ON product_event_category.event = product.event AND product_event_category.root = true LEFT JOIN product_category_offers category_offer ON category_offer.id = product_offer.category_offer LEFT JOIN product_offer_price product_offer_price ON product_offer_price.offer = (SELECT tmp_product_offer_price.offer FROM product_offer_price tmp_product_offer_price WHERE tmp_product_offer_price.offer = product_offer.id ORDER BY tmp_product_offer_price.offer DESC LIMIT 1) LEFT JOIN product_offer_quantity product_offer_quantity ON product_offer_quantity.offer = product_offer.id LEFT JOIN product_variation product_variation ON product_variation.offer = product_offer.id LEFT JOIN product_photo product_photo ON product_photo.event = product.event LEFT JOIN product_offer_images product_offer_images ON product_offer_images.offer = product_offer.id LEFT JOIN product_variation_images product_variation_image ON product_variation_image.variation = product_variation.id LEFT JOIN product_category_offers_trans category_offer_trans ON category_offer_trans.offer = category_offer.id AND category_offer_trans.local = ? LEFT JOIN product_category_variation category_variation ON category_variation.id = product_variation.category_variation LEFT JOIN product_variation_price product_variation_price ON product_variation_price.variation = (SELECT tmp_product_variation_price.variation FROM product_variation_price tmp_product_variation_price WHERE tmp_product_variation_price.variation = product_variation.id ORDER BY tmp_product_variation_price.variation DESC LIMIT 1) LEFT JOIN product_modification product_modification ON product_modification.variation = product_variation.id LEFT JOIN product_category_variation_trans category_variation_trans ON category_variation_trans.variation = category_variation.id AND category_variation_trans.local = ? LEFT JOIN product_variation_quantity product_variation_quantity ON product_variation_quantity.variation = product_variation.id LEFT JOIN product_category_modification category_modification ON category_modification.id = product_modification.category_modification LEFT JOIN product_modification_price product_modification_price ON product_modification_price.modification = (SELECT tmp_product_modification_price.modification FROM product_modification_price tmp_product_modification_price WHERE tmp_product_modification_price.modification = product_modification.id ORDER BY tmp_product_modification_price.modification DESC LIMIT 1) LEFT JOIN product_invariable product_invariable ON
product_invariable.product = product.id AND
(
(product_offer.const IS NOT NULL AND product_invariable.offer = product_offer.const) OR
(product_offer.const IS NULL AND product_invariable.offer IS NULL)
)
AND
(
(product_variation.const IS NOT NULL AND product_invariable.variation = product_variation.const) OR
(product_variation.const IS NULL AND product_invariable.variation IS NULL)
)
AND
(
(product_modification.const IS NOT NULL AND product_invariable.modification = product_modification.const) OR
(product_modification.const IS NULL AND product_invariable.modification IS NULL)
)
LEFT JOIN product_modification_images product_modification_image ON product_modification_image.modification = product_modification.id LEFT JOIN product_category_modification_trans category_modification_trans ON category_modification_trans.modification = category_modification.id AND category_modification_trans.local = ? LEFT JOIN product_modification_quantity product_modification_quantity ON product_modification_quantity.modification = product_modification.id LEFT JOIN user_profile_discount project_profile_discount ON
project_profile_discount.event = project_profile.event INNER JOIN product_category category ON category.id = product_event_category.category LEFT JOIN product_category_trans category_trans ON category_trans.event = category.event AND category_trans.local = ? LEFT JOIN product_category_info category_info ON category_info.event = category.event LEFT JOIN product_category_section category_section ON category_section.event = category.event LEFT JOIN product_category_cover category_cover ON category_cover.event = category.event LEFT JOIN product_category_section_field category_section_field ON category_section_field.section = category_section.id LEFT JOIN product_category_section_field_trans category_section_field_trans ON category_section_field_trans.field = category_section_field.id AND category_section_field_trans.local = ? LEFT JOIN product_property product_property ON product_property.event = product.event AND product_property.field = category_section_field.const WHERE product.id = ? GROUP BY category.id, product.id, product.event, product_active.active, product_active.active_from, product_active.active_to, product_seo.title, product_seo.keywords, product_seo.description, product_trans.name, product_desc.preview, product_desc.description, product_info.url, category_offer.reference, project_profile_discount.value, category.id, category_trans.name, category_info.url, category_info.threshold, category_cover.ext, category_cover.cdn, category_cover.name
Parameters: [
"ru"
"ru"
"pc"
"019469c3-700f-76a9-9b34-ccde7b4e6f49"
"ru"
"ru"
"ru"
"ru"
"ru"
"018f7c37-ed68-7085-9150-105eaa69a0ab"
]
SELECT
product.id,
product.event,
product_active.active,
product_active.active_from,
product_active.active_to,
product_seo.title AS seo_title,
product_seo.keywords AS seo_keywords,
product_seo.description AS seo_description,
product_trans.name AS product_name,
product_desc.preview AS product_preview,
product_desc.description AS product_description,
product_info.url,
category_offer.reference AS product_offer_reference,
project_profile_discount.value AS project_discount,
JSON_AGG (
DISTINCT JSONB_BUILD_OBJECT (
'0',
CONCAT(
product_offer.value, product_variation.value,
product_modification.value, product_modification_price.price
),
'offer_uid',
product_offer.id,
'offer_value',
product_offer.value,
'offer_postfix',
product_offer.postfix,
'offer_reference',
category_offer.reference,
'offer_name',
category_offer_trans.name,
'variation_uid',
product_variation.id,
'variation_value',
product_variation.value,
'variation_postfix',
product_variation.postfix,
'variation_reference',
category_variation.reference,
'variation_name',
category_variation_trans.name,
'modification_uid',
product_modification.id,
'modification_value',
product_modification.value,
'modification_postfix',
product_modification.postfix,
'modification_reference',
category_modification.reference,
'modification_name',
category_modification_trans.name,
'article',
CASE WHEN product_modification.article IS NOT NULL THEN
product_modification.article
WHEN product_variation.article IS NOT NULL THEN
product_variation.article
WHEN product_offer.article IS NOT NULL THEN
product_offer.article
WHEN product_info.article IS NOT NULL THEN
product_info.article
ELSE
NULL
END,
'product_invariable_id',
COALESCE(product_invariable.id),
'profile_discount',
NULL,
'project_discount',
project_profile_discount.value,
'promotion_price',
NULL,
'promotion_active',
NULL,
'price',
CASE WHEN product_modification_price.price IS NOT NULL
AND product_modification_price.price > 0 THEN
product_modification_price.price
WHEN product_variation_price.price IS NOT NULL
AND product_variation_price.price > 0 THEN
product_variation_price.price
WHEN product_offer_price.price IS NOT NULL
AND product_offer_price.price > 0 THEN
product_offer_price.price
WHEN product_price.price IS NOT NULL
AND product_price.price > 0 THEN
product_price.price
ELSE
NULL
END,
'old_price',
COALESCE(
NULLIF(
product_modification_price.old,
0
),
NULLIF(product_variation_price.old, 0),
NULLIF(product_offer_price.old, 0),
NULLIF(product_price.old, 0),
0
),
'currency',
CASE WHEN product_modification_price.price IS NOT NULL
AND product_modification_price.price > 0 THEN
product_modification_price.currency
WHEN product_variation_price.price IS NOT NULL
AND product_variation_price.price > 0 THEN
product_variation_price.currency
WHEN product_offer_price.price IS NOT NULL
AND product_offer_price.price > 0 THEN
product_offer_price.currency
WHEN product_price.price IS NOT NULL
AND product_price.price > 0 THEN
product_price.currency
ELSE
NULL
END,
'quantity',
CASE WHEN product_modification_quantity.quantity IS NOT NULL THEN
(
product_modification_quantity.quantity - product_modification_quantity.reserve
)
WHEN product_variation_quantity.quantity IS NOT NULL THEN
(
product_variation_quantity.quantity - product_variation_quantity.reserve
)
WHEN product_offer_quantity.quantity IS NOT NULL THEN
(
product_offer_quantity.quantity - product_offer_quantity.reserve
)
WHEN product_price.quantity IS NOT NULL THEN
(
product_price.quantity - product_price.reserve
)
ELSE
NULL
END
)
)
FILTER (
WHERE
CASE WHEN product_modification_price.price IS NOT NULL
AND product_modification_price.price > 0 THEN
product_modification_price.price
WHEN product_variation_price.price IS NOT NULL
AND product_variation_price.price > 0 THEN
product_variation_price.price
WHEN product_offer_price.price IS NOT NULL
AND product_offer_price.price > 0 THEN
product_offer_price.price
WHEN product_price.price IS NOT NULL
AND product_price.price > 0 THEN
product_price.price
ELSE
0
END > 0
) AS product_offers,
JSON_AGG (
DISTINCT CASE WHEN product_modification_image.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT (
'product_img_root',
product_modification_image.root,
'product_img',
CONCAT (
'/upload/product_modification_images',
'/', product_modification_image.name
),
'product_img_ext',
product_modification_image.ext,
'product_img_cdn',
product_modification_image.cdn
)
WHEN product_variation_image.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT (
'product_img_root',
product_variation_image.root,
'product_img',
CONCAT (
'/upload/product_variation_images',
'/', product_variation_image.name
),
'product_img_ext',
product_variation_image.ext,
'product_img_cdn',
product_variation_image.cdn
)
WHEN product_offer_images.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT (
'product_img_root',
product_offer_images.root,
'product_img',
CONCAT (
'/upload/product_offer_images',
'/', product_offer_images.name
),
'product_img_ext',
product_offer_images.ext,
'product_img_cdn',
product_offer_images.cdn
)
WHEN product_photo.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT (
'product_img_root',
product_photo.root,
'product_img',
CONCAT (
'/upload/product_photo', '/', product_photo.name
),
'product_img_ext',
product_photo.ext,
'product_img_cdn',
product_photo.cdn
)
ELSE
NULL
END
) AS product_images,
category.id as category_id,
category_trans.name AS category_name,
category_info.url AS category_url,
category_info.threshold AS category_threshold,
category_cover.ext AS category_cover_ext,
category_cover.cdn AS category_cover_cdn,
CASE WHEN category_cover.name IS NOT NULL THEN
CONCAT (
'/upload/product_category_cover',
'/', category_cover.name
)
ELSE
NULL
END AS category_cover_dir,
JSON_AGG (
DISTINCT JSONB_BUILD_OBJECT (
'0', category_section_field.sort,
'field_name', category_section_field.name,
'field_public', category_section_field.public,
'field_card', category_section_field.card,
'field_type', category_section_field.type,
'field_trans', category_section_field_trans.name,
'field_value', product_property.value
)
) AS category_section_field
FROM
product
INNER JOIN product_active product_active ON product_active.event = product.event
LEFT JOIN product_seo product_seo ON product_seo.event = product.event
AND product_seo.local = ?
LEFT JOIN product_trans product_trans ON product_trans.event = product.event
AND product_trans.local = ?
LEFT JOIN product_description product_desc ON product_desc.event = product.event
AND product_desc.device = ?
LEFT JOIN product_price product_price ON product_price.event = product.event
LEFT JOIN product_info product_info ON product_info.product = product.id
LEFT JOIN product_offer product_offer ON product_offer.event = product.event
INNER JOIN users_profile project_profile ON project_profile.id = ?
INNER JOIN product_categories_product product_event_category ON product_event_category.event = product.event
AND product_event_category.root = true
LEFT JOIN product_category_offers category_offer ON category_offer.id = product_offer.category_offer
LEFT JOIN product_offer_price product_offer_price ON product_offer_price.offer = (
SELECT
tmp_product_offer_price.offer
FROM
product_offer_price tmp_product_offer_price
WHERE
tmp_product_offer_price.offer = product_offer.id
ORDER BY
tmp_product_offer_price.offer DESC
LIMIT
1
) LEFT JOIN product_offer_quantity product_offer_quantity ON product_offer_quantity.offer = product_offer.id
LEFT JOIN product_variation product_variation ON product_variation.offer = product_offer.id
LEFT JOIN product_photo product_photo ON product_photo.event = product.event
LEFT JOIN product_offer_images product_offer_images ON product_offer_images.offer = product_offer.id
LEFT JOIN product_variation_images product_variation_image ON product_variation_image.variation = product_variation.id
LEFT JOIN product_category_offers_trans category_offer_trans ON category_offer_trans.offer = category_offer.id
AND category_offer_trans.local = ?
LEFT JOIN product_category_variation category_variation ON category_variation.id = product_variation.category_variation
LEFT JOIN product_variation_price product_variation_price ON product_variation_price.variation = (
SELECT
tmp_product_variation_price.variation
FROM
product_variation_price tmp_product_variation_price
WHERE
tmp_product_variation_price.variation = product_variation.id
ORDER BY
tmp_product_variation_price.variation DESC
LIMIT
1
) LEFT JOIN product_modification product_modification ON product_modification.variation = product_variation.id
LEFT JOIN product_category_variation_trans category_variation_trans ON category_variation_trans.variation = category_variation.id
AND category_variation_trans.local = ?
LEFT JOIN product_variation_quantity product_variation_quantity ON product_variation_quantity.variation = product_variation.id
LEFT JOIN product_category_modification category_modification ON category_modification.id = product_modification.category_modification
LEFT JOIN product_modification_price product_modification_price ON product_modification_price.modification = (
SELECT
tmp_product_modification_price.modification
FROM
product_modification_price tmp_product_modification_price
WHERE
tmp_product_modification_price.modification = product_modification.id
ORDER BY
tmp_product_modification_price.modification DESC
LIMIT
1
) LEFT JOIN product_invariable product_invariable ON product_invariable.product = product.id
AND (
(
product_offer.const IS NOT NULL
AND product_invariable.offer = product_offer.const
)
OR (
product_offer.const IS NULL
AND product_invariable.offer IS NULL
)
)
AND (
(
product_variation.const IS NOT NULL
AND product_invariable.variation = product_variation.const
)
OR (
product_variation.const IS NULL
AND product_invariable.variation IS NULL
)
)
AND (
(
product_modification.const IS NOT NULL
AND product_invariable.modification = product_modification.const
)
OR (
product_modification.const IS NULL
AND product_invariable.modification IS NULL
)
)
LEFT JOIN product_modification_images product_modification_image ON product_modification_image.modification = product_modification.id
LEFT JOIN product_category_modification_trans category_modification_trans ON category_modification_trans.modification = category_modification.id
AND category_modification_trans.local = ?
LEFT JOIN product_modification_quantity product_modification_quantity ON product_modification_quantity.modification = product_modification.id
LEFT JOIN user_profile_discount project_profile_discount ON project_profile_discount.event = project_profile.event
INNER JOIN product_category category ON category.id = product_event_category.category
LEFT JOIN product_category_trans category_trans ON category_trans.event = category.event
AND category_trans.local = ?
LEFT JOIN product_category_info category_info ON category_info.event = category.event
LEFT JOIN product_category_section category_section ON category_section.event = category.event
LEFT JOIN product_category_cover category_cover ON category_cover.event = category.event
LEFT JOIN product_category_section_field category_section_field ON category_section_field.section = category_section.id
LEFT JOIN product_category_section_field_trans category_section_field_trans ON category_section_field_trans.field = category_section_field.id
AND category_section_field_trans.local = ?
LEFT JOIN product_property product_property ON product_property.event = product.event
AND product_property.field = category_section_field.const
WHERE
product.id = ?
GROUP BY
category.id,
product.id,
product.event,
product_active.active,
product_active.active_from,
product_active.active_to,
product_seo.title,
product_seo.keywords,
product_seo.description,
product_trans.name,
product_desc.preview,
product_desc.description,
product_info.url,
category_offer.reference,
project_profile_discount.value,
category.id,
category_trans.name,
category_info.url,
category_info.threshold,
category_cover.ext,
category_cover.cdn,
category_cover.name
SELECT product.id, product.event, product_active.active, product_active.active_from, product_active.active_to, product_seo.title AS seo_title, product_seo.keywords AS seo_keywords, product_seo.description AS seo_description, product_trans.name AS product_name, product_desc.preview AS product_preview, product_desc.description AS product_description, product_info.url, category_offer.reference AS product_offer_reference, project_profile_discount.value AS project_discount, JSON_AGG
( DISTINCT
JSONB_BUILD_OBJECT
(
'0', CONCAT(product_offer.value, product_variation.value, product_modification.value, product_modification_price.price),
'offer_uid', product_offer.id,
'offer_value', product_offer.value,
'offer_postfix', product_offer.postfix,
'offer_reference', category_offer.reference,
'offer_name', category_offer_trans.name,
'variation_uid', product_variation.id,
'variation_value', product_variation.value,
'variation_postfix', product_variation.postfix,
'variation_reference', category_variation.reference,
'variation_name', category_variation_trans.name,
'modification_uid', product_modification.id,
'modification_value', product_modification.value,
'modification_postfix', product_modification.postfix,
'modification_reference', category_modification.reference,
'modification_name', category_modification_trans.name,
'article', CASE
WHEN product_modification.article IS NOT NULL THEN product_modification.article
WHEN product_variation.article IS NOT NULL THEN product_variation.article
WHEN product_offer.article IS NOT NULL THEN product_offer.article
WHEN product_info.article IS NOT NULL THEN product_info.article
ELSE NULL
END,
'product_invariable_id', COALESCE(
product_invariable.id
),
'profile_discount', NULL,
'project_discount', project_profile_discount.value,
'promotion_price', NULL,
'promotion_active', NULL,
'price', CASE
WHEN product_modification_price.price IS NOT NULL AND product_modification_price.price > 0 THEN product_modification_price.price
WHEN product_variation_price.price IS NOT NULL AND product_variation_price.price > 0 THEN product_variation_price.price
WHEN product_offer_price.price IS NOT NULL AND product_offer_price.price > 0 THEN product_offer_price.price
WHEN product_price.price IS NOT NULL AND product_price.price > 0 THEN product_price.price
ELSE NULL
END,
'old_price', COALESCE(
NULLIF(product_modification_price.old, 0),
NULLIF(product_variation_price.old, 0),
NULLIF(product_offer_price.old, 0),
NULLIF(product_price.old, 0),
0
),
'currency', CASE
WHEN product_modification_price.price IS NOT NULL AND product_modification_price.price > 0 THEN product_modification_price.currency
WHEN product_variation_price.price IS NOT NULL AND product_variation_price.price > 0 THEN product_variation_price.currency
WHEN product_offer_price.price IS NOT NULL AND product_offer_price.price > 0 THEN product_offer_price.currency
WHEN product_price.price IS NOT NULL AND product_price.price > 0 THEN product_price.currency
ELSE NULL
END,
'quantity', CASE
WHEN product_modification_quantity.quantity IS NOT NULL THEN (product_modification_quantity.quantity - product_modification_quantity.reserve)
WHEN product_variation_quantity.quantity IS NOT NULL THEN (product_variation_quantity.quantity - product_variation_quantity.reserve)
WHEN product_offer_quantity.quantity IS NOT NULL THEN (product_offer_quantity.quantity - product_offer_quantity.reserve)
WHEN product_price.quantity IS NOT NULL THEN (product_price.quantity - product_price.reserve)
ELSE NULL
END
)
)
FILTER (WHERE
CASE
WHEN product_modification_price.price IS NOT NULL AND product_modification_price.price > 0 THEN product_modification_price.price
WHEN product_variation_price.price IS NOT NULL AND product_variation_price.price > 0 THEN product_variation_price.price
WHEN product_offer_price.price IS NOT NULL AND product_offer_price.price > 0 THEN product_offer_price.price
WHEN product_price.price IS NOT NULL AND product_price.price > 0 THEN product_price.price
ELSE 0
END > 0)
AS product_offers,
JSON_AGG
(DISTINCT
CASE
WHEN product_modification_image.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_modification_image.root,
'product_img', CONCAT ( '/upload/product_modification_images' , '/', product_modification_image.name),
'product_img_ext', product_modification_image.ext,
'product_img_cdn', product_modification_image.cdn
)
WHEN product_variation_image.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_variation_image.root,
'product_img', CONCAT ( '/upload/product_variation_images' , '/', product_variation_image.name),
'product_img_ext', product_variation_image.ext,
'product_img_cdn', product_variation_image.cdn
)
WHEN product_offer_images.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_offer_images.root,
'product_img', CONCAT ( '/upload/product_offer_images' , '/', product_offer_images.name),
'product_img_ext', product_offer_images.ext,
'product_img_cdn', product_offer_images.cdn
)
WHEN product_photo.ext IS NOT NULL THEN
JSONB_BUILD_OBJECT
(
'product_img_root', product_photo.root,
'product_img', CONCAT ( '/upload/product_photo' , '/', product_photo.name),
'product_img_ext', product_photo.ext,
'product_img_cdn', product_photo.cdn
)
ELSE NULL
END)
AS product_images, category.id as category_id, category_trans.name AS category_name, category_info.url AS category_url, category_info.threshold AS category_threshold, category_cover.ext AS category_cover_ext, category_cover.cdn AS category_cover_cdn,
CASE
WHEN category_cover.name IS NOT NULL
THEN CONCAT ( '/upload/product_category_cover' , '/', category_cover.name)
ELSE NULL
END AS category_cover_dir, JSON_AGG
( DISTINCT
JSONB_BUILD_OBJECT
(
'0', category_section_field.sort,
'field_name', category_section_field.name,
'field_public', category_section_field.public,
'field_card', category_section_field.card,
'field_type', category_section_field.type,
'field_trans', category_section_field_trans.name,
'field_value', product_property.value
)
)
AS category_section_field FROM product INNER JOIN product_active product_active ON product_active.event = product.event LEFT JOIN product_seo product_seo ON product_seo.event = product.event AND product_seo.local = 'ru' LEFT JOIN product_trans product_trans ON product_trans.event = product.event AND product_trans.local = 'ru' LEFT JOIN product_description product_desc ON product_desc.event = product.event AND product_desc.device = 'pc' LEFT JOIN product_price product_price ON product_price.event = product.event LEFT JOIN product_info product_info ON product_info.product = product.id LEFT JOIN product_offer product_offer ON product_offer.event = product.event INNER JOIN users_profile project_profile ON
project_profile.id = '019469c3-700f-76a9-9b34-ccde7b4e6f49' INNER JOIN product_categories_product product_event_category ON product_event_category.event = product.event AND product_event_category.root = true LEFT JOIN product_category_offers category_offer ON category_offer.id = product_offer.category_offer LEFT JOIN product_offer_price product_offer_price ON product_offer_price.offer = (SELECT tmp_product_offer_price.offer FROM product_offer_price tmp_product_offer_price WHERE tmp_product_offer_price.offer = product_offer.id ORDER BY tmp_product_offer_price.offer DESC LIMIT 1) LEFT JOIN product_offer_quantity product_offer_quantity ON product_offer_quantity.offer = product_offer.id LEFT JOIN product_variation product_variation ON product_variation.offer = product_offer.id LEFT JOIN product_photo product_photo ON product_photo.event = product.event LEFT JOIN product_offer_images product_offer_images ON product_offer_images.offer = product_offer.id LEFT JOIN product_variation_images product_variation_image ON product_variation_image.variation = product_variation.id LEFT JOIN product_category_offers_trans category_offer_trans ON category_offer_trans.offer = category_offer.id AND category_offer_trans.local = 'ru' LEFT JOIN product_category_variation category_variation ON category_variation.id = product_variation.category_variation LEFT JOIN product_variation_price product_variation_price ON product_variation_price.variation = (SELECT tmp_product_variation_price.variation FROM product_variation_price tmp_product_variation_price WHERE tmp_product_variation_price.variation = product_variation.id ORDER BY tmp_product_variation_price.variation DESC LIMIT 1) LEFT JOIN product_modification product_modification ON product_modification.variation = product_variation.id LEFT JOIN product_category_variation_trans category_variation_trans ON category_variation_trans.variation = category_variation.id AND category_variation_trans.local = 'ru' LEFT JOIN product_variation_quantity product_variation_quantity ON product_variation_quantity.variation = product_variation.id LEFT JOIN product_category_modification category_modification ON category_modification.id = product_modification.category_modification LEFT JOIN product_modification_price product_modification_price ON product_modification_price.modification = (SELECT tmp_product_modification_price.modification FROM product_modification_price tmp_product_modification_price WHERE tmp_product_modification_price.modification = product_modification.id ORDER BY tmp_product_modification_price.modification DESC LIMIT 1) LEFT JOIN product_invariable product_invariable ON
product_invariable.product = product.id AND
(
(product_offer.const IS NOT NULL AND product_invariable.offer = product_offer.const) OR
(product_offer.const IS NULL AND product_invariable.offer IS NULL)
)
AND
(
(product_variation.const IS NOT NULL AND product_invariable.variation = product_variation.const) OR
(product_variation.const IS NULL AND product_invariable.variation IS NULL)
)
AND
(
(product_modification.const IS NOT NULL AND product_invariable.modification = product_modification.const) OR
(product_modification.const IS NULL AND product_invariable.modification IS NULL)
)
LEFT JOIN product_modification_images product_modification_image ON product_modification_image.modification = product_modification.id LEFT JOIN product_category_modification_trans category_modification_trans ON category_modification_trans.modification = category_modification.id AND category_modification_trans.local = 'ru' LEFT JOIN product_modification_quantity product_modification_quantity ON product_modification_quantity.modification = product_modification.id LEFT JOIN user_profile_discount project_profile_discount ON
project_profile_discount.event = project_profile.event INNER JOIN product_category category ON category.id = product_event_category.category LEFT JOIN product_category_trans category_trans ON category_trans.event = category.event AND category_trans.local = 'ru' LEFT JOIN product_category_info category_info ON category_info.event = category.event LEFT JOIN product_category_section category_section ON category_section.event = category.event LEFT JOIN product_category_cover category_cover ON category_cover.event = category.event LEFT JOIN product_category_section_field category_section_field ON category_section_field.section = category_section.id LEFT JOIN product_category_section_field_trans category_section_field_trans ON category_section_field_trans.field = category_section_field.id AND category_section_field_trans.local = 'ru' LEFT JOIN product_property product_property ON product_property.event = product.event AND product_property.field = category_section_field.const WHERE product.id = '018f7c37-ed68-7085-9150-105eaa69a0ab' GROUP BY category.id, product.id, product.event, product_active.active, product_active.active_from, product_active.active_to, product_seo.title, product_seo.keywords, product_seo.description, product_trans.name, product_desc.preview, product_desc.description, product_info.url, category_offer.reference, project_profile_discount.value, category.id, category_trans.name, category_info.url, category_info.threshold, category_cover.ext, category_cover.cdn, category_cover.name;
|