我正在尝试简化更新数据库记录。我已经研究了几种方法和选项,但任何专注于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经验主要是选择,更新,插入。