我有一个相当复杂的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函数,但这不是必需的:
基于“序列”和“地址”,我想在一个月内添加所有POWER1和POWER2。因此,在这个表中,我想要一个返回大小为2的行( 'power1‘和’power2‘各返回一行)的查询。如果我看一下“11月份和‘序列号’=DEADBEEF和'addr'= FAS235DQ92F6C110”行,我希望power1Sum为~8.5,power2Sum为~6.2。
有人知道如何在纯MySQL代码或Zend框架中执行此查询吗?
非常感谢!
发布于 2011-11-28 12:45:22
我认为这样的东西可能会对你的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.";
}https://stackoverflow.com/questions/8291365
复制相似问题