我有一个表daily
和一个表food
。在food
中,我将我吃的食物的数据库存储到food
中。在daily
中,我只存储我当天吃的食物(必须从food
中选择,修改并存储在daily
中),并且在一天结束时,daily
表被清除(DELETE FROM daily
删除了所有行)。
我想弄清楚的是我如何从表food
复制一行,并将其复制到表daily
,同时修改它的值。
food
和daily
具有相同的结构
food(本表内容不变)
name calories grams fat protein
---------------------------------------
apple 50 80 1.2 2
potato 90 45 3.4 5
carrot 10 70 6.2 6
daily(以我吃了一个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
。
在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"
我可以建议对您的模式稍加修改,使您的生活更简单吗?对于你的数据,你的数据不是标准化的。
将您的日表更改为只包含两列,一列用于名称,一列用于克数,这是您需要插入的唯一信息,不需要修改食物表中的任何值。
现在,要检索您想要每天显示的值,执行以下操作:
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;
希望有所帮助