1

我有一张桌子daily和一张桌子food。在其中food,我存储了一个我吃的食物的数据库food。在daily中,我只存储我当天吃的食物(必须从 中选择food、修改并存储在 中daily),并且在一天结束时,daily表格被清除(所有行都用 删除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. 我称重apple,它是93g

93g除以80g哪个产量1.1625。(脂肪和蛋白质)的所有统计数据apple都必须乘以1.1625然后插入到我的daily表中。

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


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

4

2 回答 2

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"
于 2013-01-04T03:15:53.657 回答
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;

希望能帮助到你

于 2013-01-04T03:16:40.370 回答