DROP VIEW recipes_nestings_resolved; CREATE VIEW recipes_nestings_resolved AS WITH RECURSIVE r1(recipe_id, includes_recipe_id, includes_servings, level) AS ( SELECT id AS recipe_id, id AS includes_recipe_id, 1 AS includes_servings, 0 AS level FROM recipes UNION ALL SELECT rn.recipe_id, r1.includes_recipe_id, rn.servings * r1.includes_servings AS includes_servings, r1.level + 1 AS level FROM recipes_nestings rn, r1 r1 WHERE rn.includes_recipe_id = r1.recipe_id ) SELECT *, 1 AS id -- Dummy, LessQL needs an id column FROM r1;