RelationalDesign: dml_nutritioneer_calculations_1.0.sql

File dml_nutritioneer_calculations_1.0.sql, 1.4 KB (added by 201165, 2 weeks ago)

version 2_dml_calc

Line 
1-- recipe.kcal_sum = SUM(kcal per 100g * gramsInRecipe / 100)
2UPDATE recipe r
3SET kcal_sum = ROUND(COALESCE((
4 SELECT SUM(i.kcal * rci.ingredient_quantity / 100.0)
5 FROM recipe_contains_ingredient rci
6 JOIN ingredient i ON i.name = rci.ingredient_name
7 WHERE rci.recipe_id = r.id
8 ), 0), 2);
9
10-- grocery_list.kcal = kcal bulk-added + kcal single-added
11UPDATE grocery_list g
12SET kcal = ROUND(
13 COALESCE((SELECT SUM(r.kcal_sum)
14 FROM grocery_list_bulk_add_ingredient b
15 JOIN recipe r ON r.id = b.recipe_id
16 WHERE b.list_id = g.id), 0)
17 + COALESCE((SELECT SUM(i.kcal * s.buy_quantity / 100.0)
18 FROM grocery_list_single_add_ingredient s
19 JOIN ingredient i ON i.name = s.ingredient_name
20 WHERE s.list_id = g.id), 0)
21 , 2);
22
23-- intake_planner.kcal = Portion based
24UPDATE intake_planner ip
25SET kcal = ROUND((
26 SELECT SUM(r.kcal_sum / r.servings) -- one portion per saved post
27 FROM intake_planner_save_to_list_post sp
28 JOIN post p ON p.id = sp.post_id
29 JOIN recipe r ON r.id = p.recipe_id
30 WHERE sp.planner_id = ip.id
31 ), 2)
32WHERE EXISTS (SELECT 1
33 FROM intake_planner_save_to_list_post sp
34 JOIN post p ON p.id = sp.post_id
35 WHERE sp.planner_id = ip.id AND p.recipe_id IS NOT NULL);