我有一张表daily
和一张表food
。在food
中,我将我吃的食物数据库存储到food
中。在daily
中,我只存储我当天吃的食物(必须从food
中选择,修改并存储在daily
中),并在一天结束时daily
1}}表被清除(所有行都被DELETE FROM daily
删除)。
我想弄清楚的是我如何从表food
复制一行并将其复制到表daily
,同时修改它的值。
food
和daily
都具有相同的结构。
食物(此表中的任何内容都没有变化)
name calories grams fat protein
---------------------------------------
apple 50 80 1.2 2
potato 90 45 3.4 5
carrot 10 70 6.2 6
每日(我吃了一个93克的苹果后的表格)
name calories grams fat protein
---------------------------------------
apple 58.125 93 1.395 2.325
示例
我称量了一种只存在于我的食物数据库中的食物,如果没有,我将不得不加入。
然后我从下拉菜单中选择食物并以克为单位输入它的重量。我从列表中选择apple
。我称我的apple
为93g
。
我的93g
除以80g
,产生1.1625
。 apple
(脂肪和蛋白质)的所有统计数据必须乘以1.1625
,然后插入我的daily
表格。
如何从food
检索行,通过修饰符(1.1625
)修改其中的每一个值,并将其插入到我的daily
表中?
我刚刚意识到我可以将我选择的任何食物加载到数组中并修改每个单元格值,然后将该数组泵入daily
。
答案 0 :(得分:2)
在PHP中,您只需加载行,修改值并构建查询以将其插入daily
。没有什么花哨的,所以我想你是在询问如何在SQL中做到这一点:
INSERT INTO daily (name,
calories,
grams,
fat,
protein)
SELECT name,
calories * 1.1625,
grams * 1.1625,
fat * 1.1625,
protein * 1.1625
FROM food
WHERE name = "apple"
答案 1 :(得分:2)
我是否可以建议对您的架构稍作修改,以使您的生活更简单?使用您的数据,您的数据不会正常化。
将每日表更改为仅包含两列,一列用于名称,另一列用于克,这是您需要插入的唯一信息,无需修改食物表中的任何值。
现在,要检索您想要每天显示的值,请执行以下操作:
SELECT d.name, d.grams, f.fat*(d.grams/f.grams), f.protein*(d.grams/f.grams)
FROM daily d, food f
WHERE f.name=d.name;
希望有所帮助