PostgreSQL, consulta complexa para calcular ingredientes por receita

Eu tenho que calcular o alimento e os ingredientes dos alimentos usados ​​armazenados nas tabelas do 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

resultado:

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

Por enquanto, faço isso fazendo um loop através da tabela 1 e consultando a tabela 2 para cada linha, depois adicionando resultados e assim por diante (com C), o que pode ser muito lento em dados maiores.

Tabela 1 contém o código alimentar, o nome do alimento e a quantidade utilizada. A tabela 2 contém ingredientes (em ordem bagunçada) com código e quantidade usada para uma paz de comida e também código de comida no qual aparece.
A quantidade usada da tabela1 deve ser multiplicada com a quantidade da tabela2 de acordo com cada receita e deve ser adicionada ao resultado do código de ingredientes.
Assim, todas as linhas de ingredientes que vão para o "espaguete" alimentar começam com o código de espaguete de comida (10).
Alimentos sem qualquer ingrediente devem ser calculados com quantidade da tabela 1 e mostrados com o mesmo nome. Isso realmente significa que é um produto final (como garrafa de cerveja).
Aqui pode ser mais complicação, mas tenho medo de perguntar. Por exemplo em ingredinets a lista pode ser um ingrediente que é uma receita por ele mesmo. Por exemplo mostarda que contém de vinagre, sal, semente, etc ... O que então? Na tabela 2 do exemplo mostrado, a mostarda é usada como produto pronto (componente).



Existe alguma maneira de fazer tal cálculo e obter resultados rapidamente usando apenas o PostgreSQL, que dará resultados prontos ao programa C?
Talvez não seja tão complexo quanto parece para mim? Como seria essa consulta?