使用php在另一个表中存储mysql查询

时间:2013-08-01 21:18:48

标签: php mysql

这是我的MySQL表feedback

Mysql Table

我想计算每列的平均值,并使用PHP文件将结果存储到表average,如下所示。

enter image description here

我使用查询SELECT AVG (waiting) FROM feedback来计算等待列的平均值。但我不知道如何将此查询结果作为上述结构放到另一个表中。

使用查询INSERT INTO average (average) SELECT AVG (waiting) FROM feedback **时,它只会更新平均列。

请帮我提供示例代码。

由于

3 个答案:

答案 0 :(得分:1)

如果理解正确,你可以这样做

INSERT INTO average (data, average)
SELECT 'waiting',      AVG (waiting)      FROM feedback UNION ALL
SELECT 'consultation', AVG (consultation) FROM feedback UNION ALL
SELECT 'preoperative', AVG (preoperative) FROM feedback 

示例输出:

|         DATA | AVERAGE |
--------------------------
|      waiting |       3 |
| consultation |       2 |
| preoperative |       3 |

这是 SQLFiddle 演示


现在如果你在feedback表中没有大量数据,你可以抛弃average表并以相同的方式创建一个视图。因此,当您从中选择时,它们将立即计算,而不是维护平均值表

CREATE VIEW average AS 
SELECT 'waiting',   ROUND(AVG (waiting)) average FROM feedback UNION ALL
SELECT 'consultation', ROUND(AVG (consultation)) FROM feedback UNION ALL
SELECT 'preoperative', ROUND(AVG (preoperative)) FROM feedback

并使用它

SELECT * FROM average

这是 SQLFiddle 演示

答案 1 :(得分:0)

您可以从每列的平均值中获取结果,然后将其插入到单独的数据库中。

你现在正在做什么将它插入同一个数据库中的同一列,而不是另一个,这就是为什么它只是更新那个列而不是另一个。

INSERT查询示例:

$query = "INSERT INTO tableName (columnName) VALUES ($averageOfColumn)";

将'tableName'替换为您要连接的新表的名称。

将'columnName'替换为您正在使用的其他数据库中列的名称。

将'$ averageOfColumn'替换为您的变量,作为等待列的平均值。

这有帮助吗?

答案 2 :(得分:0)

获取这三列的平均值:

SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback;

要插入平均表,如果列名相同:

INSERT INTO average(waiting,consultation,preoperative) 
SELECT AVG(waiting),AVG(consultation),AVG(preoperative) FROM feedback