Files
database/migrations/000.015.sql
T

246 lines
9.0 KiB
SQL

-- DROP MATERIALIZED VIEW v_esales_product;
-- REFRESH MATERIALIZED VIEW v_esales_product;
CREATE MATERIALIZED VIEW v_esales_product AS
SELECT main.product_id AS id,
main."artNo",
stock.id AS stock_id,
stock.price AS stock_price,
main.path,
main.visible,
main.browsable,
main.designerid,
main.designercollection_id,
COALESCE((
SELECT pricepremium / 100
FROM designers
WHERE designerid = main.designerid
LIMIT 1
), 0) AS designer_margin,
(
SELECT typeid
FROM "product-printproducts"
WHERE productid = main.product_id
LIMIT 1
) AS producttype_id,
main.name,
main.height,
main.original_article_number,
main.width,
main.widths,
main.min_height,
main.min_width,
main.max_height,
main.max_width,
main.photowall_resolution,
main.canvas_resolution,
main.wallpaper_resolution,
main.lock_height,
COALESCE(main.additionalprice, 0::double precision) AS additionalprice,
main.ref1,
main.ref2,
main.ref3,
main.copyright,
main.proportions_warning,
main.margin_width_max,
main.margin_width_min,
main.margin_height_max,
main.margin_height_min,
main.width::numeric /
CASE
WHEN main.height = 0 THEN (-1.0)
ELSE main.height::numeric
END AS width_height_ratio,
main.batch,
main.image_resolution,
main."focusXpoint",
main."focusYpoint",
main."focusXpoint2",
main."focusYpoint2",
main.repeating_pattern
FROM
(
SELECT products.productid AS product_id,
products.path,
products.visible,
products.browsable,
products.designerid,
products.designercollectionid AS designercollection_id,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'artNo' LIMIT 1)
) AS "artNo",
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'name' LIMIT 1)
) AS name,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'height' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS height,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'orgArtNo' LIMIT 1)
) AS original_article_number,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'width' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS width,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'widths' LIMIT 1)
) AS widths,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'min-height' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS min_height,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'min-width' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS min_width,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'max-height' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS max_height,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'max-width' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS max_width,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'photowall_resolution' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS photowall_resolution,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'canvas_resolution' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS canvas_resolution,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'wallpaper_resolution' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS wallpaper_resolution,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'lock_height' LIMIT 1)
) AS lock_height,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'additionalprice' LIMIT 1)
)::double precision AS additionalprice,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'ref1' LIMIT 1)
) AS ref1,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'ref2' LIMIT 1)
) AS ref2,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'ref3' LIMIT 1)
) AS ref3,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'copyright' LIMIT 1)
) AS copyright,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'proportions_warning' LIMIT 1)
) AS proportions_warning,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'margin_width_max' LIMIT 1)
) AS margin_width_max,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'margin_width_min' LIMIT 1)
) AS margin_width_min,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'margin_height_max' LIMIT 1)
) AS margin_height_max,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'margin_height_min' LIMIT 1)
) AS margin_height_min,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'batch' LIMIT 1)
) AS batch,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'image_resolution' LIMIT 1)
AND value ~ '^\d+$'
)::integer AS image_resolution,
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'focusXpoint' LIMIT 1)
)::double precision AS "focusXpoint",
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'focusYpoint' LIMIT 1)
)::double precision AS "focusYpoint",
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'focusXpoint2' LIMIT 1)
)::double precision AS "focusXpoint2",
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'focusYpoint2' LIMIT 1)
)::double precision AS "focusYpoint2",
(
SELECT value FROM "product-products_fields" WHERE productid = products.productid
AND fieldid = (SELECT fieldid FROM "product-fields" WHERE field = 'repeating_pattern' LIMIT 1)
) AS repeating_pattern
FROM "product-products" products
) main
LEFT JOIN (
SELECT stockid AS id,
productid AS product_id,
(SELECT price FROM "product-stockprices" WHERE priceid = s.priceid LIMIT 1) AS price
FROM "product-stockproducts" s
) stock ON main.product_id = stock.product_id;
-- DROP INDEX v_product_id;
CREATE UNIQUE INDEX v_esales_product_id
ON v_esales_product (id);