我有一个表有一些行和很多列(大约50个) - 我不想列出所有列名,我使用while循环来遍历表,使用foreach命令查找列名和值。 现在我想将这两行添加到一行(其中id为1)并将值加在一起......
id | col 1 | col 2 | ...
1 30 21
1 11 16
2 75 0
看起来应该是这样的
id | col1 | col2 | ...
1 41 37
2 75 0
这就是我的......
$query = mysql_query("SELECT * FROM `table` WHERE `id`='1'");
while ($row = mysql_fetch_assoc($query)) {
foreach($row as $key => $val) {
if($key != 'id') {
//the sum code...?
}
}
}
你能帮帮我吗?非常感谢你......
答案 0 :(得分:1)
只是在mysql中对结果进行求和。数据库用于处理这样的事情,因此它比在php中执行更快的解决方案。
SELECT
id,
SUM(col1),
SUM(col2)
FROM table
GROUP BY id;
答案 1 :(得分:1)
基于你的代码表明你正在使用mysql我将给你一个mysql解决方案(可以很容易地移植到大多数RDBMS)。您正在寻找的内容可以通过aggregate functions轻松完成。点击链接阅读mysql的所有集合函数。
SELECT id, SUM(col1), SUM(col2) FROM table GROUP BY id;
答案 2 :(得分:0)
试试这个:请参阅解释为注释:
<?php
$query = mysql_query("SELECT * FROM `table` WHERE `id`='1'");
//Initially Set all the columns as zero.
$col1 = 0; $col2 = 0;
//Etc.
while ($row = mysql_fetch_assoc($query)) {
foreach($row as $key => $val) {
if($key != 'id') {
$$key += $val;
//Like: $col1 += 30;
}
}
}
//Now All the variables are ready added:
//Like: $col1 = 41;
//Like: $col2 = 37;
//Use them However you like:
//To update:
//1. First Delete both rows:
$query = mysql_query("DELETE FROM `table` WHERE `id`='1'");
//2. Insert
$query = mysql_query("INSERT INTO `table` (`id`,`col1`,`col2`) VALUES ('1','{$col1}','{$col2}') ");
//And so on
?>