PostgreSQL, złożone zapytanie do obliczania składników według receptury

Muszę obliczyć żywność i składniki używanej żywności przechowywane w tabelach 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

wynik:

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

Na razie robię to przez zapętlanie tabeli table1 i queriying table2 dla każdego wiersza, a następnie dodawanie wyników i tak dalej (z C), co może być bardzo powolne na większych danych.

Tabela 1 zawiera kod żywności, nazwę żywności i zużytą ilość. Tabela 2 zawiera składniki (w nieuporządkowanym porządku) z kodem i stosowaną ilością na jeden pokój żywnościowy, a także kod żywności, w którym się pojawia.
Zużyta ilość z tabeli 1 powinna być pomnożona przez ilość z tabeli 2 zgodnie z każdą recepturą i powinna być dodana do wyniku kodu składników.
Tak więc wszystkie rzędy składników, które trafiają do „spaghetti”, zaczynają się od kodu spaghetti do żywności (10).
Żywność bez jakiegokolwiek składnika powinna być obliczona z ilości z tabeli 1 i pokazana z taką samą nazwą. To oznacza, że ​​jest to produkt końcowy (jak butelka piwa).
Tutaj może być więcej komplikacji, ale boję się zapytać. Na przykład lista składników może być składnikiem, który sam jest recepturą. Na przykład musztarda zawierająca ocet, sól, nasiona itp. Co wtedy? W tabeli 2 pokazanej przykładowej musztardy używa się jako gotowego produktu (składnika).

Czy jest jakiś sposób na wykonanie takich obliczeń i szybkie uzyskanie wyników przy użyciu PostgreSQL, który da gotowe wyniki do programu C?
Może nie jest to dla mnie zbyt skomplikowane? Jak wyglądałoby to zapytanie?

questionAnswers(1)

yourAnswerToTheQuestion