将一行mysql表中的行复制到另一个表,并修改字段值

时间:2013-01-04 02:56:34

标签: php mysql

我有一张表daily和一张表food。在food中,我将我吃的食物数据库存储到food中。在daily中,我只存储我当天吃的食物(必须从food中选择,修改并存储在daily中),并在一天结束时daily 1}}表被清除(所有行都被DELETE FROM daily删除)。

我想弄清楚的是我如何从表food复制一行并将其复制到表daily,同时修改它的值。

fooddaily都具有相同的结构。

食物(此表中的任何内容都没有变化)

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。我称我的apple93g

我的93g除以80g,产生1.1625apple(脂肪和蛋白质)的所有统计数据必须乘以1.1625,然后插入我的daily表格。

如何从food检索行,通过修饰符(1.1625)修改其中的每一个值,并将其插入到我的daily表中?


我刚刚意识到我可以将我选择的任何食物加载到数组中并修改每个单元格值,然后将该数组泵入daily

2 个答案:

答案 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;

希望有所帮助