我想从我的 2 个 sql 数据库中获取数据并进行一些数学运算并将结果发布到数据库中假设我的 table1 是这样的+---+---+----------------------------+| A | B | C |+---+---+----------------------------+| 2 | 9 | result from A*B*D*E in php || 1 | 8 | result from A*B*D*E in php || 4 | 7 | result from A*B*D*E in php || 3 | 6 | result from A*B*D*E in php || 6 | 5 | result from A*B*D*E in php || 6 | 5 | result from A*B*D*E in php || 5 | 4 | result from A*B*D*E in php |+---+---+----------------------------+我的 table2 是这样的+---+----+| D | E |+---+----+| 1 | 9 || 2 | 7 || 3 | 8 || 4 | 6 || 5 | 5 || 6 | 3 || 7 | 2 |+---+----+到目前为止我做了什么 // database connection include_once("config.php"); // Query $query = mysqli_query($conn, "SELECT * FROM table1"); $query2 = mysqli_query($conn, "SELECT * FROM table2"); //Source1 while($user_data1 = mysqli_fetch_array($query)) { $A[] = $user_data1['A']; $B[] = $user_data1['B']; } //Source2 while($user_data2 = mysqli_fetch_array($query2)) { $D[] = $user_data2['D']; $E[] = $user_data2['E']; } foreach (array_combine($A, $B) as $ValueA=> $ValueB) { foreach (array_combine($D, $E) as $ValueD=> $ValueE) { $result1 = $ValueA*$ValueB*ValueD*ValueE; $val = 0.123; $result2[] = $result1*$val; } $final result = min($result2); echo round($final result, 2); unset($result2); }我还没有插入数据库,但如果数学正确的话,仍然回显调试,不知何故,此代码发现了一些错误,例如使用我的数据库,最终结果仅回显/显示 6 个数学结果,因为在 table1 中,第 5 行和第 6 行具有相同的数据我的 table1 和 2 中的课程有主键
2 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
在这种情况下要更改 C,您甚至不需要 PHP。,
要使用多个表更新 MySQL 中的值,只需在选择表时添加它们,如下所示:
UPDATE table1,table2 SET C = table1.A * table1.B * table2.D * table2.E WHERE C IS NULL;
执行此代码一次将更新所有行,以便C = A*B*D*E
根据需要在 C 尚未设置或为 NULL 的情况下更新。如果您想更新所有行,只需删除WHERE
条件即可
注意:有时(至少对我来说)当 SQL 查询中没有 WHERE 条件时,SQL 会发出警告。要绕过这个,只需WHERE 1=1
在末尾添加即可。
长风秋雁
TA贡献1757条经验 获得超7个赞
只是为了我的理解:你想计算一个值来计算,你需要表 1 中的一些明确的数据,但也需要表 2 中的一些数据,但是哪一个?我想您想使用同一行中的数据(因此 table1 中的第 1 行和 table2 中的第 1 行、表 1 中的第 2 行和 table2 中的第 2 行),对吗?现在你遇到了一个问题,因为当你创建一个时,select * from table
你不知道他们从数据库中返回的顺序。大多数情况下,它可能与您输入的顺序相同,但没有保证。你说过每个表都有一个主键,你是如何定义它们的?我猜你可能有一个 id 列,所以你可以在该 id 上加入你的表?
- 2 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消