我想输出20岁到19岁之间的增长百分比。我应该可以说“身高增长= 3”(通过身高178 - 175)或者说“身高增长= .017” %“(178/175)。
我的代码看起来像这样
<table>
<thead><tr><td>Age</td><td>Height</td><td>Height Growth %</td><td>Weight</td></tr> </thead>
<tbody>
<?php foreach ($healthdata->result_array() as $row) {
echo "<tr><td>".$row['age']."</td><td>".$row['height']."</td><td>%</td> <td>".$row['weight']."</td></tr>"; } ?>
</tbody></table>
我的模型看起来像这样
function display_healthdata()
{
$healthdata = $this->db->query("select * from healthdata where id = '1' order by age desc;");
return $healthdata;
}
基本上我不知道我能做什么样的SQL语句,或者我需要写什么代码才能进行这些计算。我还认为可能无法在数据库或PHP中进行此计算,并且我可能需要在客户端而不是服务器端执行此操作。
请让我知道我可以/应该添加的其他信息,以便您提供更多帮助。
问题已解决 所以人们发现这些代码是有帮助的...我在这个问题上使用的代码如下:
SELECT t1.*, (t1.height - IFNULL(t2.height, 0)) AS growth
FROM healthdata AS t1
LEFT JOIN healthdata AS t2
ON (t2.age = (t1.age - 1))
where t1.id = '1'
group by age
答案 0 :(得分:2)
你可以用SQL连接来做...我太累了,实际上没有给出正确的答案,但这里有一个与你的问题类似的问题的链接。 = d
How to get difference between two rows for a column field?
修改
我会抓紧抓住它。不保证不炸毁你的房子;如上所述,我很累;)
SELECT t1.*, (t1.height - IFNULL(t2.height, 0)) AS growth FROM healthdata AS t1 LEFT JOIN healthdata AS t2 ON (t2.age = (t1.age - 1))
答案 1 :(得分:0)
为此,您需要在演示文稿中插入一些逻辑。我强烈反对这样做。无论如何
<?php
$cache=array();
foreach ($healthdata->result_array() as $row) {
echo "<tr>...</tr>";
if ($row['age'] == 19)
$cache['19'] = $row['height'];
else if ($row['age'] == 20)
$cache['20'] = $row['height'];
}
$growth = $cache['20']-$cache['19'];
echo '<tr><td colspan="4">The growth is '.$growth.'</td></tr>';
?>
请注意,你不应该做2-3个不好的实践。