PostgreSQL, komplexe Abfrage zur Berechnung von Zutaten nach Rezept

Ich muss die in PostgreSQL-Tabellen gespeicherten Lebensmittel und Zutaten für gebrauchte Lebensmittel berechnen:

    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

Ergebnis:

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

Im Moment mache ich das, indem ich Tabelle1 durchlaufe und Tabelle2 für jede Zeile abfrage, dann Ergebnisse hinzufüge und so weiter (mit C), was bei größeren Daten sehr langsam sein kann.

Tabelle 1 enthält den Lebensmittelcode, den Namen des Lebensmittels und die verwendete Menge. Tabelle 2 enthält Zutaten (in unordentlicher Reihenfolge) mit Code und verwendeter Menge für einen Frieden von Lebensmitteln und auch Code von Lebensmitteln, in denen angezeigt wird.
Die verbrauchte Menge aus Tabelle 1 sollte gemäß jedem Rezept mit der Menge aus Tabelle 2 multipliziert und zum Ergebnis des Zutatencodes addiert werden.
Alle Zutatenreihen, die zu "Spaghetti" gehören, beginnen mit dem Lebensmittel-Spaghetti-Code (10).
Lebensmittel ohne Zutaten sollten mit der Menge aus Tabelle 1 berechnet und mit demselben Namen angegeben werden. Das heißt eigentlich, es ist ein Endprodukt (wie eine Bierflasche).
Hier mag es komplizierter sein, aber ich habe Angst zu fragen. Zum Beispiel in Ingredinets Liste kann Zutat sein, die von ihm selbst Rezept ist. Zum Beispiel Senf, der aus Essig, Salz, Samen usw. besteht. Was dann? In Tabelle 2 des gezeigten Beispiels wird Senf als fertiges Produkt (Komponente) verwendet.

Gibt es eine Möglichkeit für eine solche Berechnung und schnelle Ergebnisse, wenn nur PostgreSQL verwendet wird, das dem C-Programm fertige Ergebnisse liefert?
Vielleicht nicht so komplex, wie es mir scheint? Wie würde diese Abfrage aussehen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage