根据每行的列值,有条件地更新表中的多个记录

时间:2011-10-19 00:17:48

标签: php mysql

我正在尝试简化更新数据库记录。我已经研究了几种方法和选项,但任何专注于PHP而不是MySQL的方法都需要数百甚至数千个查询,这显然是不可取的。我正在使用三个表,一个包含识别产品各个方面的行,一个将描述性值与产品相关联,最后是产品。描述性表有一列用于触发使用它的所有产品的更新。我遇到的麻烦是更新可能要求产品使用新的描述,并且可能必须创建该描述,然后在产品连接表中进行设置。描述表还用于根据另一个条目计算新值。

描述表:

id | unit |       type      | update
------------------------------------
1    4oz    weight                      
2    3      servings             1
3    7oz    weight                      
4    4      servings            
5    0.66   price_per_serving
6    0.49   price_per_oz

连接器表:

id | description_id | product_id
--------------------------------
1          1              1
2          2              1
3          2              2
4          4              3

产品表:

id |    name    | price
-----------------------
1    soup         1.99
2    crackers     2.00
3    chips        0.79
4    candy bar    0.99

因此,从示例表中我需要找到描述表中的第2项需要更新。通过连接器表我看到汤和饼干有三份。我需要使用条目2来获取每个项目的价格并将其除以服务数量。如果新值不在描述表中(比如0.78 price_per_serving),则需要创建它并且连接器表需要保存现有匹配条目的id(如果存在)或者创建的新条目如果没有吨。现在将清除条目更新字段。

我可以用PHP执行所有功能没问题,因为你可以看到它只会给资源带来巨大负担。

我一直试图围绕子查询和阅读本网站上的大量文章,手册和其他问题,但我只是如此不知所措,我不知道如何开始。我发现了这个帖子中显示的示例(http://stackoverflow.com/questions/2542571/mysql-case-when-then-returning-wrong-data-type-blob),但我的MySQL经验主要是选择,更新,插入。

0 个答案:

没有答案