diff --git a/migrations/0104.sql b/migrations/0104.sql index 77e817e6..970d0cd8 100644 --- a/migrations/0104.sql +++ b/migrations/0104.sql @@ -3,9 +3,9 @@ DROP VIEW products_current_price; CREATE VIEW products_last_purchased AS -SELECT +select 1 AS id, -- Dummy, LessQL needs an id column - p.id AS product_id, + sl.product_id, sl.amount, sl.best_before_date, sl.purchased_date, @@ -13,10 +13,8 @@ SELECT sl.qu_factor_purchase_to_stock, sl.location_id, sl.shopping_location_id - FROM products p - LEFT JOIN stock_log sl - ON p.id = sl.product_id - LEFT JOIN ( + FROM stock_log sl + JOIN ( SELECT s1.product_id, MAX(s1.id) max_stock_id @@ -34,37 +32,32 @@ SELECT WHERE undone = 0 AND transaction_type in ('purchase', 'stock-edit-new', 'inventory-correction') GROUP BY s1.product_id) sp3 - ON sl.product_id = sp3.product_id - AND sl.id = sp3.max_stock_id; + ON sl.product_id = sp3.product_id + AND sl.id = sp3.max_stock_id; CREATE VIEW products_average_price AS SELECT 1 AS id, -- Dummy, LessQL needs an id column - p.id AS product_id, - CASE WHEN s.product_id IS NOT NULL THEN round(sum(s.amount * s.price) / sum(s.amount), 2) ELSE NULL END as price -FROM products p -LEFT JOIN stock s - ON p.id = s.product_id -GROUP BY p.id; + s.product_id, + round(sum(s.amount * s.price) / sum(s.amount), 2) as price +FROM stock s +GROUP BY s.product_id; CREATE VIEW products_oldest_stock_unit_price AS -- Find oldest best_before_date then oldest purchased_date then make sure to return one stock row using max SELECT 1 AS id, -- Dummy, LessQL needs an id column - p.id AS product_id, - s.amount, - s.best_before_date, - s.purchased_date, - s.price, - s.qu_factor_purchase_to_stock, - s.location_id, - s.shopping_location_id - FROM products p - LEFT JOIN stock s - ON p.id = s.product_id - LEFT JOIN ( + sw.product_id, + sw.amount, + sw.best_before_date, + sw.purchased_date, + sw.price, sw.qu_factor_purchase_to_stock, + sw.location_id, + sw.shopping_location_id + FROM stock sw + JOIN ( SELECT s1.product_id, MIN(s1.id) min_stock_id @@ -88,8 +81,8 @@ SELECT AND s1.best_before_date = sp2.oldest_date AND s1.purchased_date = sp2.min_purchased_date GROUP BY s1.product_id) sp3 - ON s.product_id = sp3.product_id - AND s.id = sp3.min_stock_id; +ON sw.product_id = sp3.product_id +AND sw.id = sp3.min_stock_id; DROP VIEW recipes_pos_resolved; CREATE VIEW recipes_pos_resolved