計算成分複雜查詢我要計算食物和存儲在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和查詢表2爲每行添加結果等等(使用C)對於較大的數據可能會非常緩慢。
表1包含食品代碼,食品名稱和使用量。 表2中包含的成分(雜亂的順序)與代碼和使用數量爲一個食物的安寧和食品代碼出現。
應根據每個配方將來自table1的使用量與來自table2的數量相乘,並添加到配料代碼的結果中。
因此,所有食材「意大利麪條」的配料行都以食品意大利麪條代碼(10)開頭。
不含任何成分的食物應根據table1中的數量進行計算並顯示相同的名稱。這實際上意味着它是最終產品(如啤酒瓶)。
這裏可能會更復雜,但我很害怕問。 例如在ingredinets列表中可能是他自己配方的成分。例如,含有醋,鹽,種子等的芥末醬......然後呢? 表示實例芥末的表2作爲成品(成分)使用。
在這裏有什麼辦法做這樣的計算和使用PostgreSQL快速獲得結果,這將給C程序提供現成的結果嗎?
也許不像我看起來那麼複雜?該查詢將如何?
HI彼得,很難相信的,但是這似乎的是需要什麼。我將嘗試將您的查詢應用於具體的模式/數據。非常感謝你! –
@ user973238你不止歡迎:)祝你好運! – peterm
對不起,我的PostgreSQL看起來有點不同(9.1在Windows 7上),所以特定的代碼我得到一組錯誤:錯誤:在「名稱」或其附近的語法錯誤 LINE 1:... code,f.food_code )代碼,COALESCE(i.name,f.name)名稱,SUM(... 錯誤:列「f.food_code」必須出現在GROUP BY子句中或用於集合函數中 LINE 1:.. .LECT SUM(f.qty)used_times,COALESCE(i.ingr_code,f.food_cod ... 錯誤:列「f.name」必須出現在GROUP BY子句中或用於集合函數中 LINE 1: ...(i.ingr_code,f.food_code)code,COALESCE(i.name,f.name)in ... –