335 lines
20 KiB
SQL
335 lines
20 KiB
SQL
-- P5-1458
|
|
|
|
INSERT INTO "product-fields" ("field")
|
|
VALUES
|
|
('print_file_width'),
|
|
('print_file_height'),
|
|
('print_file_dpi')
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
INSERT INTO "product-products_fields" ("productid", "fieldid", "value")
|
|
(
|
|
SELECT "product-products_fields".productid, (
|
|
SELECT fieldid
|
|
FROM "product-fields"
|
|
WHERE "field" = 'print_file_width'
|
|
), value
|
|
FROM "product-products_fields"
|
|
INNER JOIN "product-printproducts"
|
|
ON "product-products_fields".productid = "product-printproducts".productid
|
|
WHERE fieldid = (SELECT fieldid FROM "product-fields" WHERE "field" = 'width') AND "product-printproducts".groupid = 3
|
|
|
|
UNION
|
|
|
|
SELECT "product-products_fields".productid, (
|
|
SELECT fieldid
|
|
FROM "product-fields"
|
|
WHERE "field" = 'print_file_height'
|
|
), value
|
|
FROM "product-products_fields"
|
|
INNER JOIN "product-printproducts"
|
|
ON "product-products_fields".productid = "product-printproducts".productid
|
|
WHERE fieldid = (SELECT fieldid FROM "product-fields" WHERE "field" = 'height') AND "product-printproducts".groupid = 3
|
|
|
|
UNION
|
|
|
|
SELECT "product-products_fields".productid, (
|
|
SELECT fieldid
|
|
FROM "product-fields"
|
|
WHERE "field" = 'print_file_dpi'
|
|
), value
|
|
FROM "product-products_fields"
|
|
INNER JOIN "product-printproducts"
|
|
ON "product-products_fields".productid = "product-printproducts".productid
|
|
WHERE fieldid = (SELECT fieldid FROM "product-fields" WHERE "field" = 'image_resolution') AND "product-printproducts".groupid = 3
|
|
)
|
|
ON CONFLICT DO NOTHING;
|
|
|
|
|
|
|
|
-- Updating a product view
|
|
|
|
DO $$
|
|
BEGIN
|
|
DROP VIEW public.v_product;
|
|
EXCEPTION WHEN others THEN
|
|
RAISE NOTICE 'View does not exist';
|
|
END;
|
|
$$;
|
|
|
|
|
|
CREATE OR REPLACE VIEW public.v_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 designers.pricepremium / 100::numeric
|
|
FROM designers
|
|
WHERE designers.designerid = main.designerid
|
|
LIMIT 1), 0::numeric) AS designer_margin,
|
|
main.name,
|
|
main.height,
|
|
main.print_file_height,
|
|
main.original_article_number,
|
|
main.width,
|
|
main.print_file_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.print_file_dpi,
|
|
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'::numeric
|
|
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 "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'artNo'::text
|
|
LIMIT 1))) AS "artNo",
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'name'::text
|
|
LIMIT 1))) AS name,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'height'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS height,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'print_file_height'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS print_file_height,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'orgArtNo'::text
|
|
LIMIT 1))) AS original_article_number,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'width'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS width,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'print_file_width'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS print_file_width,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'widths'::text
|
|
LIMIT 1))) AS widths,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'min-height'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS min_height,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'min-width'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS min_width,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'max-height'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS max_height,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'max-width'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS max_width,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'photowall_resolution'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS photowall_resolution,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'canvas_resolution'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS canvas_resolution,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'wallpaper_resolution'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS wallpaper_resolution,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'lock_height'::text
|
|
LIMIT 1))) AS lock_height,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'additionalprice'::text
|
|
LIMIT 1))))::double precision AS additionalprice,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'ref1'::text
|
|
LIMIT 1))) AS ref1,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'ref2'::text
|
|
LIMIT 1))) AS ref2,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'ref3'::text
|
|
LIMIT 1))) AS ref3,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'copyright'::text
|
|
LIMIT 1))) AS copyright,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'proportions_warning'::text
|
|
LIMIT 1))) AS proportions_warning,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'margin_width_max'::text
|
|
LIMIT 1))) AS margin_width_max,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'margin_width_min'::text
|
|
LIMIT 1))) AS margin_width_min,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'margin_height_max'::text
|
|
LIMIT 1))) AS margin_height_max,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'margin_height_min'::text
|
|
LIMIT 1))) AS margin_height_min,
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'batch'::text
|
|
LIMIT 1))) AS batch,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'image_resolution'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS image_resolution,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'print_file_dpi'::text
|
|
LIMIT 1)) AND "product-products_fields".value::text ~ '^\d+$'::text))::integer AS print_file_dpi,
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'focusXpoint'::text
|
|
LIMIT 1))))::double precision AS "focusXpoint",
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'focusYpoint'::text
|
|
LIMIT 1))))::double precision AS "focusYpoint",
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'focusXpoint2'::text
|
|
LIMIT 1))))::double precision AS "focusXpoint2",
|
|
(( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'focusYpoint2'::text
|
|
LIMIT 1))))::double precision AS "focusYpoint2",
|
|
( SELECT "product-products_fields".value
|
|
FROM "product-products_fields"
|
|
WHERE "product-products_fields".productid = products.productid AND "product-products_fields".fieldid = (( SELECT "product-fields".fieldid
|
|
FROM "product-fields"
|
|
WHERE "product-fields".field::text = 'repeating_pattern'::text
|
|
LIMIT 1))) AS repeating_pattern
|
|
FROM "product-products" products) main
|
|
LEFT JOIN ( SELECT s.stockid AS id,
|
|
s.productid AS product_id,
|
|
( SELECT "product-stockprices".price
|
|
FROM "product-stockprices"
|
|
WHERE "product-stockprices".priceid = s.priceid
|
|
LIMIT 1) AS price
|
|
FROM "product-stockproducts" s) stock ON main.product_id = stock.product_id;
|
|
|
|
ALTER TABLE public.v_product
|
|
OWNER TO photowall;
|
|
GRANT ALL ON TABLE public.v_product TO photowall;
|
|
GRANT ALL ON TABLE public.v_product TO public; |