我有一个相当复杂的MySQL查询,我需要在Zend Framework中实现帮助。我有一个名为'power'的数据库,其结构如下:
id | addr | timestamp | power1 | power2 | serial
21 | FAS235DQ92F6C110 | 2011-11-08 22:51:55 | 4.25698 | 2.0189 | DEADBEEF
22 | FAS235DQ92F6C110 | 2011-11-09 22:53:05 | 0 | 1.0568 | DEADBEEF
23 | FAS235DQ92F6C110 | 2011-11-10 22:51:55 | 4.25698 | 2.0189 | DEADBEEF
24 | FAS235DQ92F6C110 | 2011-11-11 22:53:05 | 0 | 1.0568 | DEADBEEF
33 | A1B2C3D4E5F67890 | 2011-11-20 14:51:25 | 19.123 | 2.9765 | DEADBEEF
34 | A1B2C3D4E5F67890 | 2011-11-21 14:51:54 | 1.90876 | 12.123 | DEADBEEF
35 | A1B2C3D4E5F67890 | 2011-11-22 14:51:25 | 19.123 | 2.9765 | DEADBEEF
36 | A1B2C3D4E5F67890 | 2011-11-23 14:51:54 | 1.90876 | 12.123 | DEADBEEF
我想在SQL语句中执行以下操作,最好使用Zend DB函数,但这不是必需的:
基于'serial'和'addr',我想将所有power1和power2添加一个月。所以,在这个表中,我想要一个返回大小为2的行的查询(每个'power1'和'power2'一个)。如果我查看“11月和'序列'= DEADBEEF和'addr'= FAS235DQ92F6C110”的行,我希望power1Sum为~8.5,power2Sum为~6.2。
有谁知道如何在纯MySQL代码或Zend框架中进行此查询?
非常感谢!
答案 0 :(得分:1)
我认为这样的事情可能对Zend Framework有所帮助。这将返回一行,其中包含所选时段的总计。
假设$addr = 'FAS235DQ92F6C110'
和$serial = 'DEADBEEF'
,这将返回2011年11月1日至30日的总计。
$select = $table->select()
->from('power', array(
'power1Sum' => 'SUM(power1)',
'power2Sum' => 'SUM(power2)'))
->where('serial = ?', $serial)
->where('addr = ?', $addr)
->where('timestamp >= ?', '2011-11-01')
->where('timestamp <= ?', '2011-11-30');
$result = $select->query();
if ($result) {
$row = $result->fetch();
echo 'Power 1 Sum = ' . $row['power1Sum'] . '<br />';
echo 'Power 2 Sum = ' . $row['power2Sum'] . '<br />';
} else {
echo "No results found.";
}