PostgreSQL, сложный запрос для расчета ингредиентов по рецепту

Я должен рассчитать продукты и ингредиенты использованной пищи, хранящиеся в таблицах PostgreSQL:

    table1 'usedfood'

food    food                    used    used
code    name                    qty     meas
----------------------------------------------
10      spaghetti               3       pcs
156     mayonnaise              2       pcs
173     ketchup                 1       pcs
172     bolognese sauce         2       pcs
173     ketchup                 1       pcs
10      spaghetti               2       pcs
156     mayonnaise              1       pcs

table2 'ingredients'

food    ingr.   ingredient      qty     meas    
code    code    name            /1      in 1
----------------------------------------------
10      1256    spaghetti rinf  75      gramm
156     1144    salt            0.3     gramm
10      1144    salt            0.5     gramm
156     1140    fresh egg       50      gramm
172     1138    tomato          80      gramm
156     1139    mustard         5       gramm
172     1136    clove           1       gramm
156     1258    oil             120     gramm
172     1135    laurel          0.4     gramm
10      1258    oil             0.4     gramm
172     1130    corned beef     40      gramm

результат:

used
times   code    food/ingredient qty     meas
----------------------------------------------
5       1256    spaghetti rinf  375     gramm
8       1258    oil             362     gramm
2       1138    tomato          160     gramm
3       1140    fresh egg       150     gramm
2       1130    corned beef     80      gramm
3       1139    mustard         15      gramm
8       1144    salt            3.4     gramm
2       1136    clove           2       gramm
2       1135    laurel          0.8     gramm
2       173     ketchup         2       pcs    //haven't any ingredients

Сейчас я делаю это, просматривая таблицу table1 и запрашивая table2 для каждой строки, затем добавляя результаты и т. Д. (С C), что может быть очень медленным для больших данных.

Таблица1 содержит код продукта, название продукта и использованное количество. Таблица 2 содержит ингредиенты (в беспорядочном порядке) с кодом и используемым количеством на один кусок пищи, а также код пищи, в которой они указаны.
Использованное количество из таблицы 1 следует умножить на количество из таблицы 2 согласно каждому рецепту и добавить к результату кода ингредиентов.
Таким образом, все строки ингредиентов, которые идут в "спагетти", начинаются с кода спагетти (10).
Пищу без каких-либо ингредиентов следует рассчитывать по количеству из таблицы1 и показывать с тем же названием. Это на самом деле означает, что это конечный продукт (например, бутылка пива).
Здесь может быть больше осложнений, но я боюсь спросить. Например, в списке ингредиентов может быть ингредиент, который рецепт сам. Например, горчица, содержащая уксус, соль, семена и т. Д. Что тогда? В таблице 2 приведенного примера в качестве готового продукта (компонента) используется горчица.

Есть ли способ сделать такой расчет и получить результаты быстро с помощью только PostgreSQL, который даст готовые результаты для C-программы?
Может быть, это не слишком сложно для меня? Как будет выглядеть этот запрос?

Ответы на вопрос(1)

Ваш ответ на вопрос